c語言桃花
A. C語言猴子吃桃問題遞歸法
題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個
第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下
的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
1.程序分析:採取逆向思維的方法,從後往前推斷。
2.程序源代碼:
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;/*第一天的桃子數是第2天桃子數加1後的2倍*/
x2=x1;
day--;
}
printf("the total is %d\n",x1);
}
==============================================================
B. C語言 用遞歸演算法來解決猴子吃桃問題。:一天一隻猴子摘下一堆桃子,吃了一半,覺得不過癮,又多吃了一
#include<stdio.h>
intn;//n作為全局變數
intpeach(intx)//表示第x天有幾個桃子
{
if(x<n)//如果x不是最後一天,那麼這一天桃子的數量等於明天桃子數加1再乘以2
return2*(peach(x+1)+1);
elseif(x==n)//如果是最後一天,返回1
return1;
else
return-1;//異常
}
intmain()
{
scanf("%d",&n);//輸入題目中的n
printf("%d ",peach(1));
return0;
}
請採納。
C. C語言猴子吃桃
一個猴子摘了一些桃子,它每天吃了其中的一半然後再多吃了一個,
直到第10天,它發現只有1個桃子了,問它第一天摘了多少個桃子?
猴子分N天吃完了桃子,要想求出第1天的桃子數,就先要求出第2天的桃子數,.......因此,有:
a1=(a2+1)*2;
a2=(a3+1)*2;
a3=(a4+1)*2;
......
a9=(a10+1)*2;
a10=1;
現在就知道了演算法,我們可以用遞歸來求解:
int qiu(int a,int n)
{
if(n==1) a=1; //第10天就只剩1個了
else a=(a(n-1)+1)*2; //前一天總比後1天多一半加1
}
-------------------------------------
#include<stdio.h>
int qiu(int a,int n);
main(){
int zuih=1,tians=10;//最後一天的個數,天數
long sum;
sum=qiu(1,10);
printf("di yi tian you %ld ge.\n"):
}
int qiu(int a,int n)
{
if(n==1) a=1; //第10天就只剩1個了
else a=(a(n-1)+1)*2; //前一天總比後1天多一半加1
}