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

计算n的阶乘可以使用以下代码,没有循环怎么实现阶乘的呢?

http://img1.sycdn.imooc.com//5764d70c000197b103700395.jpg

如果n=5,在方法里result = factorial(n-1)*n; 实现的应该是4*5,为什么还会1*2*3*4*5呢???

新手这里面没有循序,所以想不明白,请大神指点一下!!!!!

正在回答

3 回答

”当碰到一个条件的时候都会再重复的从头说起“,理解这句话就行了,程序执行到“result=factorial(n-1)*n时,遇到了factorial(n-1),所以程序要从头开始执行,此时n=n-1;这就完成了循环

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

go_bacK_love 提问者

非常感谢!
2016-07-10 回复 有任何疑惑可以回复我~

factorial()是个递归函数,当执行result = factorial(n-1)*n;时,实现的并不是4*5,因为factorial(n-1)会继续执行函数factorial()。简单来说就是函数里面套函数,直到满足跳出条件(本例中,main函数中n=5,所以它的跳出条件就是n==1),某种意义上也是一种循环吧



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

factorial(5)  result=f(4)*5

f(4)  result=f(3)*4

f(3)  result=f(2)*3

f(2)  result=f(1)*2

f(1)  result=1

然后跳出 往回带  result=1*2*3*4*5

return result

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

举报

0/150
提交
取消

计算n的阶乘可以使用以下代码,没有循环怎么实现阶乘的呢?

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