猴子桃子編程
① C語言作業:用遞歸法怎麼做猴子摘桃知道的大哥大姐幫幫忙!
猴子摘桃問題
猴子第一天摘下N個桃子,當時就吃了一半,還不過癮,就又多吃了一個。第二天又將剩下的桃子吃掉一半,又多吃了一個。以後每天都吃前一天剩下的一半零一個。到第10天在想吃的時候就剩一個桃子了,問第一天共摘下來多少個桃子?
#include<stdio.h>
intgetPeachNumber(n){
intnum;/*定義所剩桃子數*/
if(n==10)
return1;/*遞歸結束條件*/
else{
num=getPeachNumber(n+1)*2+2;/*遞歸*/
printf("第%d天所剩桃子%d個 ",n,num);/*天數,所剩桃子個數*/
}
returnnum;
}
intmain(void){
intnum=getPeachNumber(1);
printf("猴子第一天摘了%d個桃子。 ",num);
getch();/*屏幕暫留*/
return0;
}
運行結果
② C語言編程 小猴吃了5個桃子,大猴吃的是小猴的3倍少1,編程並輸出他們共吃多少桃
……這還要編程
#include<stdio.h>
void main()
{
int a=5;
printf("一共吃了%d個桃\n",a+3*a-1);
}
③ 編程,猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。第2天早上將
int day, x1, x2;
day = 9;
x2 = 1;
while (day > 0)
{
x1 = (x2 + 1) * 2; /*第一天的桃子是第二天桃子數加1後的2倍*/
x2 = x1;
day--; /*因為從後向前推所以天數遞減*/
Console.WriteLine("the total is {0}", x1);
Console.ReadKey();
④ 用C語言編一程序 猴子分桃的問題
摘的數量最少是什麼樣的情況?我想應該滿足:
1,第5隻猴子有桃子吃;
2,第5隻猴子在醒後吃桃子之前把桃子平均分成了5份,而且還多了一個桃子(隱含意義是第5隻猴子吃了2個桃子,剩下4個桃子,這樣才滿足摘的數量最少);
那麼我們就知道了,最後一個猴子(將猴子數量擴展為未知,猴子數為n)醒後還有n+1個桃子;
第n-1個猴子醒後還有n*(n+1)+1個桃子;
第n-2個猴子醒後還有n*(n*(n+1)+1)+1;
以此類推,可由遞歸算出桃子總數
⑤ C語言遞推流程圖,有一堆不知數量的桃子,猴子第一天吃掉一半,覺得不過癮,又多吃了一個;
欲解答這個題,首先理順思路。解答這個題,可以用倒推法,亦可用正推法,把數學問題解決了,在編程就不難了。
這個題,用倒推法比較簡單;推理如下:
"到第10天早上,猴子發現只剩一個桃子了",說明第九天只有4個桃子(吃掉一半加1,也就是吃掉3個,到第十天就只剩下1個了嘛),所以第八天只有桃子(4+1)乘以2,也就是10個桃子(吃掉一半加1,也就是6個就只剩下4個)…… ……找到規律就可以計算了。
規律:吃掉了一半多一個,那麼剩下的就是比一半少一個了。
1.第九天有桃子(1+1)×2=4 個
2.第八天:(4+1)×2=10
3.第七天:(10+1)×2=22
4.第六天:(22+1)×2=46
5.第五天:(46+1)×2=94
6.第四天:(94+1)×2=190
7.第三天:(190+1)×2=382
8.第二天:(382+1)×2=766
9.第一天:(766+1)×2=1534
附程序:
#include<stdio.h>
void main()
{
int i,sum=1;
for (i=1;i<=9;i++)
sum=(sum+1)*2;
printf("桃子總數為:%d\n",sum);
}