猴子吃桃问题--C语言
- 问题描述:
猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早 上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天 早上想再吃时,就只剩一个桃子了。求第1天共摘多少个桃子。
方法一:循环处理
第n天的桃子数量=(第n+1天桃子的数量+1)*2
int main()
{
int sum = 1;//第10天还剩1个桃子
for (int i = 0; i < 9; i++)//10天吃了9次
{
sum = (sum + 1) * 2;//第n天的桃子数量=(第n+1天桃子的数量+1)*2
}
printf("第一天有%d个桃子", sum);
return 0;
}
方法二:递归
Peach(n)=(Peach(n+1)+1)*2
int Peach(int n)
{
if (n == 10)
return 1;
return (Peach(n + 1) + 1) * 2;
}
int main()
{
printf("第一天有%d个桃子", Peach(1));
return 0;
}
运行结果: