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

看不懂怎么阶乘了,怎么就反复调用了。。

http://img1.sycdn.imooc.com//55c0bf7c000197b103700395.jpg

例题不明白。。。

正在回答

6 回答

这就是“递归”,factorial函数中又调用了factorial。

递归函数中首先需要一个递归截止条件(if(n==0 || n==1)),再按照逻辑调用自己......直到某次调用时达到了截止条件,最深的这次调用的结果会返回,于是结果一路返回到最早的那次调用中,这样就得到了这一串的结果。递归算是数学归纳法在编程上的应用。

举个例子:

架设你调用的是factorial(5),那么在函数中会跳到最后一个else处,又调用了factorial函数,但这次的参数是5-1=4。注意,这次调用时factorial(5)还没有返回。

在factorial(4)中又会调用factorial(3)......直到调用到factorial(2)。

在factorial(2)中会有这句 result = factorial(1) * 2,这次调用factorial(1)会运行到第二个else处(遇到了截止条件),函数直接返回1。那么factorial(2)中的result就是1*2=2,这样factorial(2)就会再把2返回到factorial(3)......

一路返回到最初的factorial(5)中,result = factorial(4) * 5 这一句中的factorial(4)就包含了之前从1乘到4的结果,这样再乘5,就得到了5的阶乘。

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

菠萝不困 提问者

太感谢了,嘿嘿
2015-08-05 回复 有任何疑惑可以回复我~

最有效的解释,很好理解赞

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

非常感谢!!!

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

赞一个


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

很清晰~

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

解释的清清楚楚,堪称典范。

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

举报

0/150
提交
取消
C语言入门
  • 参与学习       926016    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

看不懂怎么阶乘了,怎么就反复调用了。。

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