20221231星期六:
'''
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
第10次落地时,共经过多少米?第10次反弹多高?
'''
# 方式一:
"""
sum1 = []
height = []
hei = 100.0 # 起始高度
for i in range(1, 11):
# 从第二次开始,落地时的距离应该是反弹高度乘以2(弹到最高点再落下)
if i == 1:
sum1.append(hei)
else:
sum1.append(2*hei)
hei /= 2
height.append(hei)
print('总高度:tour = %.3f'%sum(sum1))
print('第10次反弹高度:height = %.3f'%height[-1])
# 总高度:tour = 299.609
# 第10次反弹高度:height = 0.098
"""
# 方式二:
"""
# 从第二次落地开始,落地的距离应该是反弹高度乘以2(弹到最高点再落下):
def ballMerge(n):
count_hei = 0 # 第n次落地经过的距离
height = 100 # 第n次落地后,弹起的高度
for i in range(1,n+1):
if i == 1:
count_hei = 100
height = 50
else:
count_hei += (100/(2**(i-1)))*2
height = 100/(2**i)
print("第 {} 次落地经过的距离为:{}
第 {} 次落地后弹起的高度为:{}".format(n,round(count_hei,3),n,round(height,3)))
ballMerge(10)
# 第 10 次落地经过的距离为:299.609
# 第 10 次落地后弹起的高度为:0.098
"""
# 方式三:递归算法:
"""
def height(n):
if n == 0:
return 100
else:
return height(n-1)/2
count = 10
sum_height = 0
for i in range(0,count):
if i == 0:
sum_height = sum_height + height(i)
else:
sum_height = sum_height + height(i) * 2
print("总高度:{}".format(round(sum_height,3)))
print("第10次落地后弹起的高度为:{}".format(round(height(10),3)))
# 总高度:299.609
# 第10次落地后弹起的高度为:0.098
"""
页面更新:2024-03-18
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号