一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下。 编程计算气球在第n次落地时,共经过多少米? 第n次反弹多高?
时间: 2024-09-19 18:01:40 浏览: 58
答案100道Python编程题及答案(一).doc
这是一个典型的动态规划问题,我们可以用递推的方式来解决。假设球在第i次落地前总共经过的距离是`dis[i-1]`,那么第i次落地它会先下落`height`米,然后反弹到`height * 0.5`米,所以这一趟总距离是`height + height * 0.5`。因此,第i次落地后的总距离是`dis[i-1] + height + height * 0.5`。
对于第n次落地的情况,我们首先初始化`dis[0] = 0`,因为第一次落地是从初始高度开始的。然后对于每一次递推,直到n次:
```python
def total_distance(height, n):
if n == 1:
return height
else:
dis_n_minus_1 = total_distance(height, n - 1)
return dis_n_minus_1 + height + height * 0.5
# 求第n次落地总距离
total_dis = total_distance(height, n)
# 求第n次反弹的高度
bounce_height = height * (0.5) ** (n - 1)
```
阅读全文