亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

例子就沒有看懂了呀

求大神來解釋下這個例子..我覺得那個自定義函數只能算出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語言入門
  • 參與學習       926904    人
  • 解答問題       21532    個

C語言入門視頻教程,帶你進入編程世界的必修課-C語言

進入課程

例子就沒有看懂了呀

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號