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

例子就没有看懂了呀

求大神来解释下这个例子..我觉得那个自定义函数只能算出5*4=20然后赋值给了return就算再循环return始终还是等于20啊

正在回答

2 回答


自定义函数的名称不好打,我以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

明白了吧!自己要亲手熟悉一下流程!以后碰到递归就不怕了~~


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

IT狂人_ 提问者

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

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);

递 (往下)                   归(往上)

知道了吗?不懂再问,嘿嘿。



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

举报

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

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

进入课程

例子就没有看懂了呀

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