采用逆向思维:
/*
猴子吃桃子问题。猴子第一天摘下若干个桃,当即吃掉一半,又多吃一个。
第二天早上又将剩下的一半吃掉一半,又多吃一个。以后每天早上都吃了
前天剩下的一半零一个,到第10天早上只剩下最后一个桃。问第一天摘了几个桃。
*/
#include<stdio.h>
int main()
{
int sum;//桃子的总数
int day = 9;//天数
int temp=1;
while(day!=0)
{
//第10天是1个桃子,则第9天的桃子数=(第10天剩余桃子数+1)后的2倍
temp =2*(temp+1);//第一天的桃子数是第2天桃子数加1后的2倍
day--;
}
sum = temp;
printf("%d\n",sum);//答案是1534个桃子
return 0;
}
=================================================================
假设从有一个桃子开始,每天加一个桃子在*2,一直做9次,即可累加出桃子的总数
程序代码如下:
#include<stdio.h>
int main()
{
int sum=1;//表示第10天桃子
for(int i=0;i<9;i++)//循环9次,依次反推出第八天,第七天...直到求出第一天的桃子总数
{
sum++;//桃子数现加1
sum*=2;//在*2倍
}
printf("%d\n",sum);//输出桃子总数1534
return 0;
}