課程
/后端開發
/C
/C語言入門
求大神來解釋下這個例子..我覺得那個自定義函數只能算出5*4=20然后賦值給了return就算再循環return始終還是等于20啊
2016-09-21
源自:C語言入門 5-7
正在回答
自定義函數的名稱不好打,我以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
明白了吧!自己要親手熟悉一下流程!以后碰到遞歸就不怕了~~
IT狂人_ 提問者
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語言入門視頻教程,帶你進入編程世界的必修課-C語言
2 回答例子沒看懂
3 回答看不懂這3個例子
1 回答例題最后沒看懂
3 回答左邊例子的第七點看不懂啊
2 回答看不懂呀!
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-09-21
自定義函數的名稱不好打,我以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
明白了吧!自己要親手熟悉一下流程!以后碰到遞歸就不怕了~~
2016-10-11
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);
遞 (往下) ? ? ? ? ? ? ? ? ? 歸(往上)
知道了嗎?不懂再問,嘿嘿。