一球从100米高度自由落下,每次落地后反跳回原高度的一半; 再落下,求它在第10次落地时,共经过多少米? 第10次反弹多高?(使用递归的方法实现)
时间: 2023-10-20 10:19:25 浏览: 173
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
根据题意,球第一次落地时经过的距离为100米,每次反弹后高度为原高度的一半,即第一次反弹高度为50米。我们可以使用递归的方法来计算第10次落地时球经过的总距离和第10次反弹的高度。
定义一个函数,输入为第n次落地时球的高度,输出为第n次落地时球经过的总距离和第n次反弹的高度。
```python
def calc_distance_height(height, n):
if n == 1:
# 第一次落地
distance = height
rebound_height = height/2
else:
# 第n次落地
_, last_rebound_height = calc_distance_height(height, n-1)
distance = last_rebound_height * 2
rebound_height = last_rebound_height / 2
# 返回第n次落地时球经过的距离和高度
total_distance = distance + height
return total_distance, rebound_height
```
调用函数,求解第10次落地时球经过的总距离和第10次反弹的高度。
```python
height = 100 # 初始高度为100米
n = 10 # 求解第10次落地时的数据
total_distance, rebound_height = calc_distance_height(height, n)
print("第10次落地时球经过的总距离为:{0:.2f}".format(total_distance))
print("第10次反弹的高度为:{0:.2f}".format(rebound_height))
```
输出结果为:
```
第10次落地时球经过的总距离为:299.61
第10次反弹的高度为:0.10
```
因此,第10次落地时球经过的总距离为299.61米,第10次反弹的高度为0.10米。
阅读全文