js 一球从100米高度自由落下,每次落地后反跳回原高度的一半; // 再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高。
时间: 2023-10-20 10:12:10 浏览: 24
根据题意,球第一次落地时经过的距离为 $100$ 米,第二次落地时经过的距离为 $100+100/2+100/2=200$ 米,第三次落地时经过的距离为 $200+100/2+100/2+100/4+100/4=300$ 米,以此类推。
可以发现,每次落地后,球经过的距离都是由上一次落地后的距离再加上反弹的距离得到的,而反弹的距离等于上一次落地时球的高度,也就是原高度的一半。因此,设 $S_n$ 表示第 $n$ 次落地时球经过的距离,$h_n$ 表示第 $n$ 次反弹的高度,则有:
$$
\begin{aligned}
S_1 &= 100 \\
S_2 &= S_1 + 100/2 + 100/2 = 200 \\
S_3 &= S_2 + 100/4 + 100/4 + 100/4 + 100/4 = 300 \\
S_4 &= S_3 + 100/8 + 100/8 + 100/8 + 100/8 + 100/8 + 100/8 + 100/8 + 100/8 = 400 \\
&\cdots \\
S_n &= S_{n-1} + 2h_{n-1} \\
h_n &= \frac{h_{n-1}}{2}
\end{aligned}
$$
根据上面的递推关系式,可以写出一个计算 $S_n$ 和 $h_n$ 的 JavaScript 函数:
```javascript
function calculate(n) {
let s = 100, h = 50;
for (let i = 2; i <= n; i++) {
s += 2 * h;
h /= 2;
}
return [s, h];
}
```
调用 `calculate(10)` 可以得到第 10 次落地时球经过的总距离和反弹的高度,结果为:
```
[ 299.609375, 0.09765625 ]
```
因此,第 10 次落地时球经过的总距离为约 $299.61$ 米,反弹的高度为约 $0.098$ 米。