美文网首页
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下

作者: 简书mhy | 来源:发表于2020-07-18 15:42 被阅读0次

    方法一

    把每一次下落的路程加上每一次反弹的路程相加,即可得出总路程;
    由于计算第10次落地的路程,所以不要加第10次的反弹路程即可

    次数 下落路程 反弹路程
    1 100    100×20 50    100×2-1
    2 50    100×2-1 25    100×2-2
    3 25    100×2-2 12.5    100×2-3
    ... .... ...
    n 100×2-(n-1) 100×2-n

    代码如下:

            int n = 10;
            double s = 0, h = 0;
            for (int i = 1; i <= n; i++) {
                s += 100 * Math.pow(2, -(i - 1));
                if (i != n) {  //不计算第10次反弹
                    h += 100 * Math.pow(2, -i);
                }
            }
            double sum = s + h;
            System.out.println("第10次落地时经过的总路程" +sum);//299.609375
            System.out.println("第10 次反弹高度" + 100 * Math.pow(2, -10));//0.09765625
    

    方法二

    换一种思路,不计算第10次的反弹,可以假设第1次没有反弹,即第2次到第10次的反弹和下落都是一样的,再加上第一次的下落就可以了。
    第一次下落100;
    第二次反弹50 下落 50
    第三次反弹 25 下落 25

    image.png

    代码如下

            int n = 10;
            double s = 100, h = 100;
            for (int i = 1; i <= n; i++) {
                h = h / 2;
                if (i < n) {
                    s = s + h*2;
                }
            }
            System.out.println("第10次落地时经过的总路程" +s);//299.609375
            System.out.println("第10 次反弹高度" + h);//0.09765625
    

    相关文章

      网友评论

          本文标题:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下

          本文链接:https://www.haomeiwen.com/subject/siffkktx.html