为了账号安全,请及时绑定邮箱和手机立即绑定

例题中为什么n的值没有变,却能计算阶乘呢。

例题中为什么n的值没有变,却能计算阶乘呢。

正在回答

2 回答

long factorial(int n){

long result;


if(n==0 || n==1){

result = 1;

}else{

result = factorial(n-1) * n;  // 递归调用

}


return result;

}

求 5!,即调用factorial(5)。当进入factorial函数体后,由于 n=5,不等于0或1,所以执行result = factorial(n-1) * n;,即result = factorial(5-1) * 5;,接下来也就是调用factorial(4)。这是第一次递归。

进行四次递归调用后,实参的值为 1,也就是调用factorial(1)。这时递归就结束了,开始逐层返回。factorial(1) 的值为 1,factorial(2) 的值为 1*2=2,factorial(3) 的值为 2*3=6,factorial(4) 的值为 6*4=24,最后返回值 factorial(5) 为 24*5=120。

希望能帮到你

9 回复 有任何疑惑可以回复我~
#1

慕先生6658929 提问者

非常感谢! 棒棒哒
2016-04-10 回复 有任何疑惑可以回复我~
#2

慕先生6658929 提问者

其实我刚发出去就理解了;感谢你的乐于助人
2016-04-10 回复 有任何疑惑可以回复我~

非常感激,这里解决了我的一大部分疑惑。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

例题中为什么n的值没有变,却能计算阶乘呢。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信