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

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

我想問例子階乘遞歸那道題

http://img1.sycdn.imooc.com//568e93e4000197b103700395.jpg??

新手。。我的遞歸理解是褲子脫掉然后又穿上,這樣理解對嗎?

①就算自定義函數寫在main函數前面,程序還是從main開始執行嗎? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ②else if(n==0||n==1)這句里的n==0貌似根本不會有這種情況,他的意義是什么呢? ? ? ? ? ? ?③定義n=5,那么第一次是factorial(5-1)*5,4*5=20,這個結果存到哪里去了? ? ? ? ? ? ? ? ? ? ④運行到factorial(2-1)*2的時候,factorial(1)符合了else if(n==0||n==1)里面的n==1,執行result=1,下一步應該執行哪里呢?這時n=1,重新開始執行的話那就不是陷在else if了嗎,那么是怎么1*2*3....5的.

⑤還有。。if(n<0)這句好像也沒執行過。。。

我的廢話會不會太多了,希望大神針對我的12345順序回答,謝謝??!

正在回答

2 回答

首先,執行的時候是先從main函數開始運行;其次第二和第五個問題其實是一樣的,因為你寫這個函數是要考慮到多方面的因素的,這里沒用到是因為在main函數中n = 5;如我把-1或者0賦值給n呢?這個時候就要通過以上的判斷了;最后,你沒有理解遞歸的過程,其實數學計算過程是發生在逆推的過程,就是從factorial(1)回到factorial(5),再好好看下課程最上面的那個圖

2 回復 有任何疑惑可以回復我~
#1

86338730 提問者

我最主要的問題是當滿足factorial(1),開始逆推的時候,factorial(1)是哪個條件使他變成factorial(3-1)*2的?
2016-01-08 回復 有任何疑惑可以回復我~
#2

86338730 提問者

非常感謝!
2016-01-08 回復 有任何疑惑可以回復我~

沒有factorial(3-1)*2這一步啊,是factorial(2-1)*2,factorial(1) = 1,然后factorial(2) = factorial(1) * 2 =2,

然后factorial(3) = factorial(2) * 3 = 6;factorial(4) = factorial(3) * 4 = 24;factorial(5) = factorial(4) * 5 = 120;這樣一個過程

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C語言入門
  • 參與學習       927001    人
  • 解答問題       21533    個

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

進入課程

我想問例子階乘遞歸那道題

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

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

幫助反饋 APP下載

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

公眾號

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