我越来越接近揭穿这个递归的奥秘了,只剩下一件事我无法在代码的这一行中进行跟踪,如果我调用243传递该值,则最终返回值是rec() 5.这应该是跟踪:

n: 4 *3: 12
n: 3 *3: 9
n: 2 *3: 6
n: 1 *3: 3
n: 0 *3: 0
n: 1 *3: 3

result: 243


正确?它如何得到243的结果?

int rec(int n)
{
if (n == 0)
    return 1;


return 3 * rec(n-1);
}

最佳答案

您的函数计算:3 ^ n。

数字3与n-1次调用的结果相乘。

f(n)= 3 * f(n-1);

f(0)= 1;

f(1)= 3 * f(0)= 3 * 1 = 3;

f(2)= 3 * f(1)= 3 * 3 = 9;

f(3)= 3 * f(2)= 3 * 3 * f(1)= 3 * 3 * 3 = 27





f(5)= 3 * 3 * 3 * 3 * 3 = 243

07-26 04:03