菠萝不困
2015-08-04 21:35
例题不明白。。。
这就是“递归”,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的阶乘。
最有效的解释,很好理解赞
非常感谢!!!
赞一个
很清晰~
解释的清清楚楚,堪称典范。
C语言入门
926212 学习 · 20797 问题
相似问题