猴子第一天摘下若干桃子吃,当即吃了一半,还不过瘾,又多吃了一个,第二天又将剩下的桃子吃掉一半,然后又多吃一个。以后每天都吃了前一天剩下的一半,再加一个。到第十天。当猴子想吃时,发现只剩下一个桃子。求第一天共摘下多少桃子?
思路:
已知第十天的桃子数量:f(10)=-1=1
已知第九天的桃子数量:f(9)=-1
.......
已知第一天的桃子数量:f(1)=-1
递归代码如下:
int peach(int n)
{
if (n == 10)
return 1;
else
return 2 * (peach(n + 1) + 1); //f(9)=2[f(10)+1]
}
int main()
{
for (int i = 1; i <= 10; i++)
{
printf("第%d天有%d个桃子n", i, peach(i));
}
}
由于本题的数量较小,所以也可以使用for循环一点点算出第一天的桃子数量
代码如下:
int main()
{
int p = 1, i;
printf("第10天有%d个桃子n", p);
for (i = 9; i >= 1; i--)
{
p++;
p = p * 2;
printf("第%d天有%d个桃子n", i, p);
}
return 0;
}



