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

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

關于(n+1)問題

為什么是getPeachNumber(n+1)不是getPeachNumber (n)

正在回答

4 回答

有點明白額

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

寫的很詳細,看懂了,謝了

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

首先getPeachNumber(int n)就是要得到第n天剩下的桃子個數,現在就是已知getPeachNumber(10) ,要得到getPeachNumber(1)。并且知道:第二天剩桃個數=前一天剩桃個數的一半-1;那么getPeachNumber(2)=getPeachNumber(1)/2-1,同理getPeachNumber(3)=getPeachNumber(2)/2-1;依此類推,得到getPeachNumber(10)=getPeachNumber(9)/2-1。由getPeachNumber(10)有了具體值,得到終止,反推得到getPeachNumber(9),然后得到getPeachNumber(8),最終得到getPeachNumber(1)。

?這下就知道,遞歸關系和終止條件,就是關鍵。在getPeachNumber(int n)中,if終止,else里面遞歸。

現在我們用n表示天數,getPeachNumber(int n)表示第n天剩桃個數,以上關系就可以表達為:getPeachNumber(n+1)=getPeachNumber(n)/2-1 ;即getPeachNumber(n)=(getPeachNumber(n+1)+1)*2;(這就是遞歸條件,讓第n天所剩桃與第n+1天所剩桃產生關系)。

在getPeachNumber(int n)函數中,定義num為第n天的剩桃數,所以num=getPeachNumber(n),也就有num=(getPeachNumber(n+1)+1)*2 (也就是這個關系式將第n天與第n+1天聯系起來了)。

寫的有點啰嗦,不知道你明白沒有。舉個例(不準確但我覺得可以幫助理解):10個人排成一列,每人一個號碼,且后一個人的號碼是前一個人的號碼的一半減一(這是遞歸關系)?,F在只有最后一個人知道自己的號碼是1(這是終止條件),那么第一個人的號碼是多少呢?是不是第一個人去問第二個人,第二人問第三人,。。。最后第九人問第十人,然后的第十這個人說自己是1,然后第九人就知道自己4(這里遞歸關系算出來),。。。。最后第一個人得到自己的號碼。


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

因為是遞歸,如果你寫‘getPeachNumber (n)’則函數只是重復地賦值,變量不發生改變。而‘getPeachNumber(n+1)’則是每次函數復調時賦值,變量都加上‘1’;

也可以簡單地拆分為‘n+1’和‘n’的區別。這種函數的復調都是解有序數列問題的;比如:第1人有 1 塊錢,第2人比第 1 人多 1 塊錢,第3人比第 2 ~~~以此類推,問第 100人有多少錢。

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

諾丁漢 提問者

還是不太懂,n本身就是一個變量,不用自增1吧
2017-01-08 回復 有任何疑惑可以回復我~

舉報

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

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

進入課程

關于(n+1)問題

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

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

幫助反饋 APP下載

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

公眾號

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