猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?
分析:
到第九天吃完桃子后,还剩下一个桃子,假设第一天摘下x1个,吃完后剩下x2个即第二天的桃子数量,x1与x2符合 x1 - ((x1 / 2) + 1) = x2,即 x1 = (x2 + 1) * 2;所以每天跟前一天的关系都是这样的,因此可以写出以下代码:
#include <stdio.h>
int main(int argc, const char *argv[])
{
int day = 9;
int x1, x2 = 1;
while(day > 0)
{
x1 = (x2 + 1) * 2;
x2 = x1;
day--;
}
printf("the first day : %d\n", x1);
return 0;
}