程式設計猴子吃桃問題猴子第一天摘下若干個桃子當機吃了一半還不過癮又吃了以後每天早

時間 2021-10-14 23:56:50

1樓:仙戈雅

先分析問題:用逆向思維來思考它,根據題意「 以後每天早上吃前天剩下的一半零一個 」,則我們可以用逆向思維來推導它,即從第十天往前推。已知第十天有一個,根據題意第九天應該就是(1+1)*2=4個,第八天應該就是(4+1)*2=10, 第七天應該就是(10+1)*2=22, 第六天應該就是(22+1)*2=46,

依此類推,直至第1天應該就是第2天(766+1)*=1534個桃子,即猴子第一天摘了1534個桃子。

為了驗證這個推導的正確性,你可以按正常邏輯來把它(即此時由前往後)推導,即由第一天1534個桃子,第二天就是1534/2-1=766個桃子,依此類推,直至第十天,那麼猴子此時就會發現只剩一個。

至此,我們由了推導的思想,再來編寫的**,就是小菜一碟的事情啦,實現的它方式無非就是那麼兩種,一種是簡單的for迴圈,另一種是遞迴。這裡我採用遞迴,因為解決此類問題往往用遞迴來思考它,會讓問題變得更簡單。按照數學思維來說 就是求未知數,則可以根據已知數出發進行求解(那麼這裡的已知數已經告訴了我們,它說第十天只有一個桃子)。

下面是我的遞迴演算法來求解它的方法:

#include

using namespace std;

int recurrent_monkey(int days) //猴子吃桃遞迴

int main()

{int days=1;

cout<

2樓:匿名使用者

unsigned int peach_counter; //桃子總數

unsigned int data[10]; //10天每天吃的桃子數量

unsigned int i;

data[0]=1;

for(i=1;i<10;i++)}

3樓:

第一天摘了1534個

程式設計,猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。第2天早上將

4樓:z博我所愛

int day, x1, x2;

day = 9;

x2 = 1;

while (day > 0)

", x1);

console.readkey();

1、猴子吃桃問題。猴子第一天摘下若干桃子,當即吃了一半,還不過癮,又多吃了一個。第二

5樓:巨蟹

^設猴子第一天公摘了抄x個桃子。

則第一天吃了後,剩下的

桃子=(x/2)-1 = (x/(2^1)) - ((2^1)-1)/(2^(1-1))

第二天吃了後,剩下的桃子數=((x/2)-1)/2) -1 =(x/4) - (1/2) - 1 =(x/(2^2)) - ((2^2)-1)/(2^(2-1));

所以,第n(n<9) 天吃了後,剩下的桃子數= (x/(2^n)) - ((2^n)-1)/(2^(n-1))

第10天早上發現只有一個了,即第九天吃了後,剩下的桃子只有一個了。即:

(x/(2^9) - ((2^9)-1)/(2^(9-1))=1,

x=(2^9)+2*(2^9-1)=(2^9)+(2^10)-2 =512+1024-2=1534;

6樓:小婷子

答案是第一天一共來摘自了: 按照倒推的方法 第十天1顆桃 第九天4顆桃 第八天10顆桃 第七天22個桃 第六天46個桃 第五天94個桃 第四天190個桃 第三天382個桃 第二天766個桃 第一天1534個桃 希望採納、、、

7樓:匿名使用者

/*猴子吃桃問題*/

#include

main()

printf("第一天共

zhi摘了%d個桃子\n",sum);

}/*具體思路dao如下專:

第10天剩餘屬

桃數:1

第9天剩餘桃數:(1+1)*2=4

第8天剩餘桃數:(4+1)*2=10

第7天剩餘桃數:(10+1)*2=22

第6天剩餘桃數:(22+1)*2=46

第5天剩餘桃數:(46+1)*2=94

第4天剩餘桃數:(94+1)*2=190

第3天剩餘桃數:(190+1)*2=382第2天剩餘桃數:(382+1)*2=766第1天剩餘桃數:

(766+1)*2=1534。。。規律很明顯,即每天剩餘的桃數是第二天桃數加1的兩倍。*/

8樓:南霸天

#include

void main()

printf("total=%d\n",x1);}

9樓:會呼吸的痛

樓上的,應該是while(day>1)

猴子吃桃問題。猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。

10樓:匿名使用者

這個程式要用逆推的方法,一個迴圈就夠了內:

#include

#include

main()

11樓:聽不清啊

#include

void main()

while(day<10);

if(a==1)

printf("t=%d\n",t);}}其實,上面的程式不夠嚴密:如a是一個奇數,程式照樣可以執行;但是卻與題目所述不符。所以最好改為如下(執行結果相同):

#include

void main()

while(day<10);

if(a==1&&day==10)

printf("t=%d\n",t);

else a=0;}}

用c語言解決猴子吃桃問題(使用指標)猴子第一天摘了若干個桃子,當即吃了一半,還不過癮又多吃了一個。 30

關於猴子吃桃問題猴子第一天摘下若干個桃子,當即吃了一半,還不過癮有多吃了一個,第二天早上又將剩下的

12樓:匿名使用者

不要在迴圈內部bai改變i的值

du,這樣的迴圈最好用while再內部zhi判斷是dao否符合條件使用break打斷退出迴圈版

天數 n

int i=0, x=0;

while(1)

i<<2;

}方法權是這樣,自己再仔細算算

迴圈裡具體該如何算

13樓:匿名使用者

python可以bai這樣做

i=1s=1

for i in range(10):

i=s+1+1

s=s+i

print(s)

猴子第一天摘下若du幹個桃子,當即吃了

zhi一半,好不過癮,又多dao吃了一個。專第二天早屬上又吃了剩下的桃子的一半,又多吃了一個。以後每天都吃了前一天剩下的一半零一個,到第 10 天早上想再吃的時候,就剩下一個桃子。

求第一天共摘多少個桃子

14樓:匿名使用者

# include

int main(void)

printf("總桃內子數為:

容%d\n", n);

return 0;}

15樓:飛之馬

用遞迴法:程式如下:

#include "stdio.h"

int qitao(int n);/*在主函式之前作調數函式說明*/void main()

int qitao(int n)/*自定義函式qitao(int n)以計算n天前的桃子數目*/

別外根據你實在的要求是想人家幫你修改你的程式,你的演算法其實也是可以算出來的,你是假設了一個很大的數域裡面存在著一個數,它經過10天后,就是1,不過你寫的程式不對,應修改如下:

#include

void main()

if(j==1)//判斷最後一天的桃子數是否為一個。

goto aa;}}

aa:printf("%d",i);}

16樓:

可以這樣的:回答

#inclide

void main()

printf("%d",x1);}

17樓:手機使用者

#include

int digui(int n);

void main()

int digui(int n)

else

return p;}

18樓:chen陳逸帆

begin

writeln('1534');

end.

c語言程式設計:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多

19樓:匿名使用者

#include

int main(void)

printf("the monkey got %ld peachs in first day.\n",x);}

C語言程式設計求第一天共摘多少個桃子

程式21 題目 猴子吃桃問題 猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個 第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下 的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。1.程式分析 採取逆向思維的方法,從後往前推斷。2....

我家新買的小狗泰迪剛到我家兩天,第一天吃東西了,今天說什麼也

菲爾愛莎 狗狗拉稀或者吐 的話,不要給狗狗吃的了,停食,讓狗狗把腸胃裡的內東西清空的 水願意容喝的話可以給,但是少給,不要給太多 一點水都不喝的話也不行,會造成脫水,脫水的話去藥店買葡萄糖粉,兌水給狗狗喝,注意好葡萄糖粉的量,別加太多。吃多了或者吃壞了肚子拉稀的話,吃寵物專用的益生菌 普通的拉稀腸胃...

媽媽買來一些蘋果,第一天吃了一半,第二天又吃了剩下的一半,最後還剩,媽媽一共買了幾個蘋果?一年

第二天還剩 2 2 4個 最開始有 第一天 4 4 8個 答 媽媽一共買了8個蘋果。 2x2x2 8個 從最後剩2個倒推 桃花煙光 2 2 1 4 1 8 杜雅豔 用2 2 4 個 再用4 4 8 個 剩下的2減去一半得1,1是第二天的,第一天是第二的雙倍。是第一天2十第二天1十剩下的2 5個媽媽一...