我越来越接近揭穿这个递归的奥秘了,只剩下一件事我无法在代码的这一行中进行跟踪,如果我调用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