递归的结果是如何产生的?
How is the result produce in a recursion?
第一个代码:a = 5
if (a==0)
return 1;
return a * xample(a-1);
我的跟踪:
5==0 错误
跳过 return 1
return 5 * 示例 (5-1)
所以,a = 4
返回方法内部
4==0 错误
跳过 return 1
return 5 * 示例 (4-1)
所以,a = 3
返回方法内部
3==0 错误
跳过 return 1
return 5 * 示例 (3-1)
所以,a = 2
返回方法内部
2==0 错误
跳过 return 1
return 5 * 示例 (2-1)
所以,a = 1
返回方法内部
1==0 假
跳过 return 1
return 5 * 示例 (1-1)
所以,a = 0
返回方法内部
0==0 真
return 1
所以最后一个值是1,怎么真正的最后一个值是120?
第二个代码: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???
在以下代码中:
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
第一个代码:a = 5
if (a==0)
return 1;
return a * xample(a-1);
我的跟踪:
5==0 错误 跳过 return 1 return 5 * 示例 (5-1) 所以,a = 4
返回方法内部 4==0 错误 跳过 return 1 return 5 * 示例 (4-1) 所以,a = 3
返回方法内部 3==0 错误 跳过 return 1 return 5 * 示例 (3-1) 所以,a = 2
返回方法内部 2==0 错误 跳过 return 1 return 5 * 示例 (2-1) 所以,a = 1
返回方法内部 1==0 假 跳过 return 1 return 5 * 示例 (1-1) 所以,a = 0
返回方法内部 0==0 真 return 1
所以最后一个值是1,怎么真正的最后一个值是120?
第二个代码: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???
在以下代码中:
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