22. 猴子吃桃問題。猴子第1天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了乙個。
第二天又將剩下的桃子吃掉一半,又多吃了乙個。
以後每天早上都吃了前一天剩下的一半另加乙個。
到第10天早上想再吃時,就只剩乙個桃子了。 求第1天共摘了多少個桃子。
分析:遞迴解題思路:
從已知事實出發,求未知結果。
該題中,已知事實為:第10天共有1個桃子。
未知結果為:第1天共摘了多少桃子?
那麼:找出 已知事實 和 未知結果 之間的關係:
由第10天沒吃前共有1個桃子,可得出第9天 沒吃前 共有幾個桃子?找出他們之間的關係。
設第10天沒吃前共有n10個桃子,第9天沒吃前共有n9個桃子:
由題意得:第9天吃了 (n9/2+1)
第9天剩了n9-(n9/2+1) 第9天剩的 就等於 第10天沒吃前的桃子
得:n9-(n9/2+1) =n10
整理得:n9=2*n10+2 這個公式很重要很關鍵,它是遞迴時主要用到的。
由這個公式,推出:n8=2*n9+2 n7=2*n8+2
想求n1->就得求n2,想求n2,就得求n3..........總結:想求n1,最終就得靠n10求出
(n1表示第1天沒吃前的桃子個數)
**如下:
while迴圈:
for迴圈:
猴子吃桃問題
猴子吃桃問題 時間限制 3000 ms 記憶體限制 65535kb 難度 0 描述 有一堆桃子不知數目,猴子第一天吃掉一半,又多吃了乙個,第二天照此方法,吃掉剩下桃子的一半又多乙個,天天如此,到第 m天早上,猴子發現只剩乙隻桃子了,問這堆桃子原來有多少個?m 29 輸入 第一行有乙個整數 n,表示有...
猴子吃桃問題
有乙隻猴子第一天摘下若干個桃子,當即吃掉了一半,有多吃了乙個 第二天又將剩下的桃子吃掉一半,有多吃了乙個 按照這樣的吃飯每天都吃掉前一天剩下的一半又多乙個。到了第10天,就剩下乙個桃子。問題,這個桃子第一天摘了多少個桃子。include int main printf d n ans return ...
猴子吃桃問題
猴子吃桃問題 猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了乙個 第二天早上又將剩下的桃子吃掉一半,又多吃了乙個。以後每天早上都吃了前一天剩下的一半零乙個。到第10天早上想再吃 時,見只剩下乙個桃子了。求第一天共摘了多少。方法一 public class test w w 1 2 syst...