欢迎光临散文网 会员登陆 & 注册

算落地弹起高度

2023-01-15 21:46 作者:此城过客  | 我要投稿

这是我自己搞出来的算法。

题:球从某一高度落下(自定义);每次落地后弹起的高度是原来高度的一半,再落下。编程计算1,球第十次反弹多高?

       2,在第十次落地时,共经过了多少米。

验证值:20,第十次弹起高度0.01953125

                      第十次总距离59.921875

————————————————————————

这道题,第一个好算,第二个麻烦。

我的算法是:

double n = Convert.ToDouble(Console.ReadLine());

int i = 1;

double sum = 0;

while (i < 11)

{

        sum += (1.5 * n);

        n /= 2.0;

        i++;

}

Console.WriteLine("第十次弹起高度:"+n);

Console.WriteLine("第十次落地总距离为:"+(sum-n));

——————————————————————————————

该算法的原理是:

总高度n= 8000;

      落下   弹起

1     8000   4000        n    0.5n       总共1.5n

2     4000   2000        n    0.5n       总共1.5n

3     2000   1000        n    0.5n       总共1.5n

4     1000    500         n    0.5n       总共1.5n

5     500     250          n    0.5n       总共1.5n

6     250     125          n    0.5n       总共1.5n

7     125     62.5         n    0.5n       总共1.5n

8     62.5    31.25        n    0.5n       总共1.5n

9     31.25   15.625      n    0.5n       总共1.5n

10    15.625  7.8125     n    0.5n       总共1.5n

一共有10个1.5n,所以只需要把这10个1.5n累加就好了,然后输出的时候减一下n,因为n这个时候经过了10次循环,他恰好就是第十次弹起的高度(而不是一开始的高度),把它减掉,就是第十次落地的总距离。

算落地弹起高度的评论 (共 条)

分享到微博请遵守国家法律