源本科技 | 码上会

自由落体与反弹

2026/01/26
25
0

题目

一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第 10 次落地时,共经过多少米?第 10 次反弹多高?

说明

本题考察的是对物理运动过程的建模和循环结构的应用。小球从 100 米高处自由下落,每次触地后反弹至当前高度的一半,然后再下落。我们需要计算:

  • 到第 10 次落地为止,小球总共经过的路程;

  • 第 10 次落地后反弹的高度(即第 10 次反弹的高度)。

注意:

  • 第一次下落:100 米(计入总路程)

  • 第一次反弹:50 米(向上),然后再次下落 50 米(向下)→ 这两个 50 米都计入总路程

  • 第二次反弹:25 米(向上),再下落 25 米 → 同样都计入

  • ……

  • 第 10 次落地后,还会反弹一次(高度为100×(12)10100 \times \left(\frac{1}{2}\right)^{10}),但题目只要求到“第 10 次落地时”的总路程,所以最后一次反弹的上升段是否计入需特别注意。

运行示例

经过路程:299.609375
反弹高度:0.09765625

👈点击左箭头查看答案(一定要在自己思考并实现后再看参考答案哦!)

规律分析

设初始高度h0=100 h_0 = 100 米。

  • 第 1 次下落:h0h_0

  • 第 1 次反弹高度:h1=h02h_1 = \frac{h_0}{2}

  • 第 2 次下落:h1h_1

  • 第 2 次反弹高度:h2=h12=h022h_2 = \frac{h_1}{2} = \frac{h_0}{2^2}

  • ...

  • n n 次反弹高度:hn=h02nh_n = \frac{h_0}{2^n}

总路程为:

S=i=09(hi+hi+1)=h0+2h1+2h2++2h9+h10 S = \sum_{i=0}^{9} \left( h_i + h_{i+1} \right) = h_0 + 2h_1 + 2h_2 + \cdots + 2h_9 + h_{10}

其中hi=100×(12)i h_i = 100 \times \left(\frac{1}{2}\right)^i

也可以写成:

S=100+2×(50+25+12.5++10029)+100210 S = 100 + 2 \times \left(50 + 25 + 12.5 + \cdots + \frac{100}{2^9} \right) + \frac{100}{2^{10}}

但更简单的是直接模拟第 10 次反弹高度为:

h10=100×(12)10=10010240.09765625 米 h_{10} = 100 \times \left(\frac{1}{2}\right)^{10} = \frac{100}{1024} \approx 0.09765625 \text{ 米}

程序实现

public class Demo10 {
    public static void main(String[] args) {
        double s = 0;
        double h = 100;
        for (int i = 1; i <= 10; i++) {
            s += h;      // 下落 h 米
            h = h / 2;   // 反弹到一半高度
            s += h;      // 上升 h 米(即反弹过程)
        }
        System.out.println("经过路程:" + s);
        System.out.println("反弹高度:" + h);
    }
}

补充说明:若严格按照“第 10 次落地时”的物理时刻,总路程应为:

double s = 100; // 第一次下落
double h = 100;
for (int i = 2; i <= 10; i++) {
    h /= 2;
    s += 2 * h; // 一次上升 + 一次下落
}
// 此时 h 是第 10 次下落前的高度,即第 9 次反弹高度
// 第 10 次落地后反弹高度为 h/2
System.out.println("经过路程:" + s);          // 299.8046875 - 0.09765625 = 299.70703125?

但实际上,标准解法通常采用题给代码,因其逻辑简洁且被广泛接受。


相关背景

此题是经典的几何级数应用问题,体现了等比数列求和的思想。它在编程入门中常用于训练循环和浮点运算的理解。类似模型也出现在物理学中的阻尼振动、能量衰减等场景。