您的位置:首頁>正文

C語言實現猴子吃桃問題(迴圈、遞迴兩種方法)

【問題描述】

猴子第一天摘下若干個桃子, 當即吃了一半, 不過癮, 又多吃了一個;第二天, 吃剩下的桃子的一半, 還不過癮, 又多吃了一個;以後每天都吃前一天剩下的一半多一個, 到第十天, 只剩下一個桃子。 求第一天猴子摘的桃子個數。 順便推薦下我自己的C/C++學習群:598131849, 不管你是小白還是大牛, 小編我都挺歡迎, 不定期分享乾貨, 包括我自己整理的資料和零基礎入門教程, 送給大家, 歡迎初學和進階中的小夥伴。

【基本思路】

採取逆向思維的方法, 從後往前推斷, 可得到遞推公式。

令:X10=1, 根據題意容易得出

X9=2*(X10+1)

X8=2*(X9+1)

Xn=2*(Xn+1+1)

【採用迴圈實現】

#include

int main(void)

{

int day,x1,x2=1; //第10天1個桃子

for(day=10;day>=1;day--)

{

printf("第%d天的桃子數為:%d ",day,x2);

x1=2*(x2+1);

x2=x1;

}

}

【採用遞迴實現】

根據題意, 可得到遞迴式及遞迴結束條件。

X(n)=2*(X(n+1)+1) (x<10)

X(10)=1 (x=1)

#include

int func(int n) //返回第n天時的桃子數

{

if(n==10)

return 1;

else

return 2*(func(n+1)+1);

}

int main(void)

{

int i;

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

printf("第%d天的桃子數:%d ", i, func(i));

return 0;

}

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示