有同学问过我一个应用题,关于猴子吃桃:
猴子第一天摘下若干个桃子,当即吃了一半,好不过瘾,又多吃了一个,第二天早上又吃了剩下的桃子的一半,又多吃了一个。以后每天都吃了前一天剩下的一半零一个,到第 10 天早上想再吃的时候,就剩下一个桃子。求第一天共摘多少个桃子?
思路:这个题我觉得可以反向来思考它,首先我们从最后一天分析,第10天早上只剩下1个桃子,那么第9天早上吃了第8天的一半又多一个,则第9天吃的时候应该有4个,第8天应该有10个桃子,但吃了第7天的一半多一个,则第7天应该有(10+1)*2=22个。
由此我们发现了规律: 1 4 10 ......(i+1)*2 i表示该数上一个数的值
通过分析我们需要用到循环来解决此问题:
#include <stdio.h>
int main()
{
int m = 1; //第10天的1个桃子
int i = 0;
while ( i < 9 ) //剩余9天的我们通过循环算出来
{
m = ( m + 1 ) * 2;
i++;
}
printf( "%d\n", m ); //最终得出最开始有多少桃子
return 0;
}
转载于:https://blog.51cto.com/chrisapril/1740049