Python基础编程20例之六:球落体

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

标签:递归   落体   最高点   算法   高度   距离   星期   方式   基础   自由

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top