c语言一球从h米高度自由落下,每次落地后反跳回原高度的一半, 求它在第n次落地时,共经过多少米?

2025-06-21 20:47:42
推荐回答(4个)
回答1:

学好C语音,数学功底一定要好,这个算法可以用递归完成,但是考虑到无限情况,最好是建立一个数学模型出来,这里可以计算一个模型公式:S=2x + x*(n-1)/n
这里n与你弹跳的次数相关,假设弹9下,n = 2^(9-1)可以无限加大,值就会更精确,
那么带入公式就很容易得到结果:
假设从10米掉下,弹9下:
S = 20 + 10*(255/256)

回答2:

int h,n;
int sum=0;
scanf("%d%d",&h,&n);
for(int i=1;i<=n;i++)
{
sum+=h;
h/=2;
}
sum=sum*2-100;
printf("%d",sum);

回答3:

#include
#include
int main()
{
int n;
double s=100,h=s/2;
scanf("%d",&n);
int i=1;
while(i{ s=s+2*h;
h=h/2;
i++;}
printf("%.6lf %.6lf\n",s,h);
return 0;
}

回答4:

这永远不可能落地。 只有个无限趋近于0的。。。
//当时看错题了。感谢评论的盆友。
改:

double x = 0;
int i=0;//
for( i = 0;i < n;++i)
{
    x+=h;            //落下的路程
    h = h/2;
    if(i != n-1)     //在最后一次的时候, 不反弹。
        x+=h;        //加反弹路程
}