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

来源:5-7 递归函数(一)

菠萝不困

2015-08-04 21:35

http://img.mukewang.com/55c0bf7c000197b103700395.jpg

例题不明白。。。

写回答 关注

6回答

  • onemoo
    2015-08-04 22:39:47
    已采纳

    这就是“递归”,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的阶乘。

    菠萝不困

    太感谢了,嘿嘿

    2015-08-05 20:10:46

    共 1 条回复 >

  • qq_墨尘_3
    2017-12-01 13:49:17

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

  • qq_记得曾经_0
    2015-12-03 22:42:36

    非常感谢!!!

  • 我带你飞
    2015-10-12 12:13:15

    赞一个


  • 繁星鸢尾
    2015-09-06 16:47:02

    很清晰~

  • 飞马流云
    2015-09-05 22:08:54

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

C语言入门

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

926212 学习 · 20797 问题

查看课程

相似问题