球下落,反弹问题 && 猴子摘桃问题

问题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);

}

结果:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。