IT狂人_
2016-09-21 10:51
求大神来解释下这个例子..我觉得那个自定义函数只能算出5*4=20然后赋值给了return就算再循环return始终还是等于20啊
自定义函数的名称不好打,我以fac简写啦~
最开始的时候调用fac(5)-->result = fac(5-1)*5-->暂停
接着调用fac(4)-->result = fac(4-1)*4-->暂停
再接着调用fac(3)-->result = fac(3-1)*3-->暂停
继续调用fac(2)-->result = fac(2-1)*2-->注意程序要开始啦,因为当n=1的时候result等于1!
因为 fac(1)的时候会return result=1,所以递归到这一步就要开始逐层返回了
第一步fac(2)的result = 2*(fac(1))=2
第二部fac(3)的result = 3*fac(2) = 6
第三部fac(4)的result = 4*fac(3) = 24
第四部fac(5)的result = 5*fac(4) = 120
至此递归函数结束,程序打印输出120
明白了吧!自己要亲手熟悉一下流程!以后碰到递归就不怕了~~
factorial阶乘的意思,比如说4阶乘,就是1*2*3*4=24,则24为4的阶乘;阶乘用“!”表示,而数学上定义,
0!=1,1!也等于1.
回归正题
result=factorial(n-1)*n; n先为5,所以result=factorial(4)*5我们要求这个值,但factorial(4)我们也不知道这个值,那么也要求它,可以把4也带进去为factorial(3)*4......
以下列表
factorial(4)*5
/\
factorial (3)*4
/\
factorial(2)*3
/\
factorial(1)*2
/\
factorial(0)*1 //可省略factorial(0)=factorial(1);
递 (往下) 归(往上)
知道了吗?不懂再问,嘿嘿。
C语言入门
926215 学习 · 20797 问题
相似问题