第一个代码: a = 5
if (a==0)
return 1;
return a * xample(a-1);
我的追踪:
5 == 0 FALSE 跳过返回1 返回5 * xample(5-1) 所以,a = 4
回到方法内部 4 == 0 FALSE 跳过返回1 返回5 * xample(4-1) 所以,a = 3
回到方法内部 3 == 0 FALSE 跳过返回1 返回5 * xample(3-1) 所以,a = 2
回到方法内部 2 == 0否 跳过返回1 返回5 * xample(2-1) 所以,a = 1
回到方法内部 1 == 0否 跳过返回1 返回5 * xample(1-1) 所以,a = 0
回到方法内部 0 == 0 TRUE 返回1
所以最后一个值是1,真正的最后一个值是怎么来的?
第二代码: a = 5
if (a<1)
return 1;
else
return a + xample(a/5);
为什么答案是7?
第三代码: a = 5
a--;
if (a>0)
{
xample(a);
}
return a;
为什么答案是4 ???
答案 0 :(得分:3)
在以下代码中:
if (a==0)
return 1;
return a * xample(a-1);
如果a是5:
return 5 * xample (5 - 1) =
5 * 4 * xample (4 - 1) =
5 * 4 * 3 * xample (3 - 1) =
5 * 4 * 3 * 2 * xample (2 - 1) =
5 * 4 * 3 * 2 * 1 * xample (1 - 1) =
5 * 4 * 3 * 2 * 1 * 1 = 120