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

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

C語言入門--關于遞歸函數

第二次調用為什么會跟第一次的值不一樣呢?總想不明白。又沒有n-1=n

正在回答

2 回答

第一次調用時n=10,就會return getWordNumber(n-1)+n,也就是getWordNumber(10-1)+10;

而getWordNumber(10-1)返回的是getWordNumber(9-1)+9;

...一直往下減

getWordNumber(2)返回getWordNumber(2-1)+2;

getWordNumber(1)返回1;

所以getWordNumber(10)就等于:

getWordNumber(1)+2+3+4+5+6+7+8+9+10=55.返回什么可以直接用返回值替換原來的式子,就容易看明白了!

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

qq_照遍天宇_04160908 提問者

可是原來的(10)為什么會被(10-1)替換呢?
2016-10-22 回復 有任何疑惑可以回復我~
#2

qq_照遍天宇_04160908 提問者

非常感謝!
2016-10-22 回復 有任何疑惑可以回復我~
#3

C_plus 回復 qq_照遍天宇_04160908 提問者

因為函數里面遞歸的時候參數是n-1啊,傳進去的是10,出來的時候就是10-1啦。這個遞歸的原理就是今天會的單詞都是昨天會的加上今天學的,那么昨天會的又是前天會的加上昨天學的,以此類推,每天會的都是前一天加上當天學會的,所以要算某一天會的單詞量,就得算出前一天會的,所以每次參數都會減一。
2016-10-22 回復 有任何疑惑可以回復我~
#4

qq_照遍天宇_04160908 提問者 回復 C_plus

第一次調用的時候我理解,是n-1,因為n已經定義為10了所以是10-1,但第二次我就不明白了,n定義的明明是10,為什么第二次n-1就變成了9-1???。?,n定義的明明是10啊,這里面又沒有n=n-1之類 的。
2016-10-23 回復 有任何疑惑可以回復我~
查看1條回復

? ?getWordNumber(10)

=getWordNumber(9)+10

=(getWordNumber(8)+9)+10

=((getWordNumber(7)+8)+9)+10

。。。。。。

=getWordNumber(1)+2+3+···+9+10

=1+2+3+···+9+10

=55


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

舉報

0/150
提交
取消

C語言入門--關于遞歸函數

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

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

幫助反饋 APP下載

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

公眾號

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