我的任务是在MIPS中实现递归函数。这个函数是
function1(n) = n-5 (if n <= 3)
否则= 4*function1(n-1) - n*function1(n-3)
其中一个测试用例是,如果n = 6,那么结果是200。
怎么从这个函数中输入6得到200 ?对我来说,答案应该是2。是我对递归有什么不理解,还是我对函数的理解错了?我很困惑
你似乎在某个地方误解了这个功能。以下是我达到200分的步骤:
function1(6) = 4*function1(5) - 6*function1(3) (by rule 2)
function1(5) = 4*function1(4) - 5*function1(2) (by rule 2)
function1(4) = 4*function1(3) - 4*function1(1) (by rule 2)
function1(3) = 3-5 = -2 (by rule 1)
function1(2) = 2-5 = -3 (by rule 1)
function1(1) = 1-5 = -4 (by rule 1)
替换回来……
function1(4) = 4*-2 - 4*-4 = -8 - -16 = 8
function1(5) = 4*8 - 5*-3 = 32 - -15 = 47
function1(6) = 4*47 - 6*-2 = 188 - -12 = 200