課程
/后端開發
/C
/C語言入門
? num = (getPeachNumber(n + 1) + 1) *?
2018-06-19
源自:C語言入門 5-8
正在回答
還有第二行代碼:int getPeachNumber(n)是錯誤的。雖然在最后可以算出正確結果,但有錯誤提示。
(n)沒有定義數據類型,因為是天數,所以用整型,(int n)
根據題意做下假設,就拿第5、6天來說明。
假設第5天桃子數為a,第6天桃子數為b,得到下面公式:
a/2-1=b? //可以理解為這個公式用在遞推
那么當計算到第10天,結果為1,反回值時就需要變換公式了
a-1*2=b*2? //等號兩邊乘以2
a=b*2+1*2 //把1*2移到等號右邊
a=(b+1)*2? //把2提取出來
寫成函數代碼就是:(getPeachNumbern(n)+1)*2
又因為遞推時,getPeachNumber(0)是沒有意義,保證n最小值為1,就寫成n+1
最后結果:(getPeachNumber(n+1)+1)*2
因為現在告訴你的是第十天的桃子數,而main函數中是求總桃子數,也就是第一天摘的桃子數,那怎么辦呢?那么遞歸就是通過不斷調用自身來獲取已知的值,既然第一天桃子數不知道,那就看看第二天的桃子數,而第一天的桃子數等于第二天的桃子數+1再*2,那第二天的桃子數又不知道,又調用自身的函數,再往前推,一直到第十天,終于知道等于一個了,計算機這樣不斷累加回去得出最后的答案。
在這個程序中,初始設定只知道getpeachnumber(10)=1,要先推出(getpeachnumber(9+1)+1)*2=num(第九天的情況)才能繼續往下推。
可以理解為函數有f(n+1)=f(n)-(f(n)/2+1),即第n+1天所剩桃子數,換過來f(n)=2*(f(n+1)+1),即第n天所剩桃子數,f(n)=num
應為遞歸 最后一次為第十天剩下1個桃子,由此往前推,剩下的1桃子個加1乘以2得到前一天的(由后向前從第十天-第九天----第一天)
舉報
C語言入門視頻教程,帶你進入編程世界的必修課-C語言
1 回答為什么 num =(getPeachNumber(n+1)+1)*2;
1 回答num = (getPeachNumber(n+1)+1)*2;
3 回答為什么是填num = (getPeachNumber(n+1)+1)*2而不是num = (getPeachNumber(n+1)*2呢
3 回答為什么num = 2*(getPeachNumber(n+1)+1)不行???
2 回答為什么num = (getPeachNumber(n+1)+1)*2;這里要把getPeachNumber括號進去?num = getPeachNumber((n+1)+1)*2不行嘛?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-07-21
還有第二行代碼:int getPeachNumber(n)是錯誤的。雖然在最后可以算出正確結果,但有錯誤提示。
(n)沒有定義數據類型,因為是天數,所以用整型,(int n)
2018-07-21
根據題意做下假設,就拿第5、6天來說明。
假設第5天桃子數為a,第6天桃子數為b,得到下面公式:
a/2-1=b? //可以理解為這個公式用在遞推
那么當計算到第10天,結果為1,反回值時就需要變換公式了
a-1*2=b*2? //等號兩邊乘以2
a=b*2+1*2 //把1*2移到等號右邊
a=(b+1)*2? //把2提取出來
寫成函數代碼就是:(getPeachNumbern(n)+1)*2
又因為遞推時,getPeachNumber(0)是沒有意義,保證n最小值為1,就寫成n+1
最后結果:(getPeachNumber(n+1)+1)*2
2018-07-04
因為現在告訴你的是第十天的桃子數,而main函數中是求總桃子數,也就是第一天摘的桃子數,那怎么辦呢?那么遞歸就是通過不斷調用自身來獲取已知的值,既然第一天桃子數不知道,那就看看第二天的桃子數,而第一天的桃子數等于第二天的桃子數+1再*2,那第二天的桃子數又不知道,又調用自身的函數,再往前推,一直到第十天,終于知道等于一個了,計算機這樣不斷累加回去得出最后的答案。
2018-07-02
在這個程序中,初始設定只知道getpeachnumber(10)=1,要先推出(getpeachnumber(9+1)+1)*2=num(第九天的情況)才能繼續往下推。
2018-06-21
可以理解為函數有f(n+1)=f(n)-(f(n)/2+1),即第n+1天所剩桃子數,換過來f(n)=2*(f(n+1)+1),即第n天所剩桃子數,f(n)=num
2018-06-19
num = (getPeachNumber(n+1)+1)*2;
應為遞歸 最后一次為第十天剩下1個桃子,由此往前推,剩下的1桃子個加1乘以2得到前一天的(由后向前從第十天-第九天----第一天)