问题1:一球从100米的高度自由落下,每次落地后反跳回原高度的一半,再落下,求他在第10次落地时,共经过多少米,第十次反弹多高。
分析:
代码:
float sum=0,i,n=100,f=100;
for(i=0;i<10;i++){
sum+=f;
n=n/2;
f=2*n;
}
printf("%f %f",sum,n);
结果:
问题2:猴子吃桃问题,猴子第一天摘下若干桃子,立马吃了一半,并且还多吃一个,第二天早上,又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个,到第10天早上再吃的时候,就剩下一个桃子了,求第一天共摘了几个桃子。
分析:
第一天的桃子数是第二天的桃子数的加1后的2倍,采取逆向思维的方法,从后往前推
代码:
main(){
int n=1,i;
for(i=0;i<9;i++){
n=(n+1)*2; //第一天桃子数是第二天桃子树加1后的二倍
}
printf("%d ",n);
}
结果: