猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了乙個。第二天早上又將剩下的桃子吃掉一半,又多吃了乙個。以後每天早上都吃了前一天剩下的一半零乙個。到第10天早上想再吃時,見只剩下乙個桃子了。求第一天共摘了多少。
看見這道題的第一感覺就是逆推思想,我把這個時間和動作顛倒過來:第一天有1個桃子,第二天再第一天桃子基礎上加1個桃子,再乘以2,到第十天有幾個桃子?
這下問題是不是變得很好理解和解決了。。。
遞迴方法直接解決。在函式中新增乙個計數器,當計數器等於10時立即跳出程式,輸出結果(也可以選擇當計數器的值為9時跳出程式,不過計數器第一天必須從0開始,第二天為1,以此類推)。在程式設計是也要注意語句的順序,語句一般是順序執行的,要注意語句順序和邏輯順序,不符合的話會造成程式執行結果和預期結果不一樣。比如說,要是在本題目中將back()函式中的total = (n + 1) * 2語句放在判定語句的前面,那麼就會多計算一次;要是將i++放在判定語句的後面,那麼應該用9來表示第十天,因為i初始化是0,在函式中再執行加1操作,而不是在剛開始就對i進行自增。
**如下:
/*猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了乙個。
第二天早上又將剩下的桃子吃掉一半,又多吃了乙個。以後每天早上都吃了前一天剩下的一半零乙個。
到第10天早上想再吃時,只剩下乙個桃子了。求第一天共摘了多少。*/
#includeusing namespace std;
int i = 0,total = 0;
void back(int n)
total = (n + 1) * 2; //當天桃子數量
back((n + 1) * 2); //遞迴 }
int main()
猴子吃桃問題
猴子吃桃問題 時間限制 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...