1. 程式人生 > 其它 >初學python演算法100例-案例19 球高空落地 彈跳N次後高度計算

初學python演算法100例-案例19 球高空落地 彈跳N次後高度計算

題目:計算N次後高度

一球從100米高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高?

解法1 列表

程式分析

通過列表將每次的高度以及反彈高度新增

程式實現

sum = []
height = [] 
hei = 100.0 # 起始高度
 
for i in range(1, 11):
    # 從第二次開始,落地時的距離應該是反彈高度乘以2(彈到最高點再落下)
    if i == 1:
        sum.append(hei)
    else:
        sum.append(2*hei) 
    hei /= 2
    height.append(hei)
 
print('總高度:tour = %.3f'%sum(sum))
print('第10次反彈高度:height = %.3f'%height[-1])

執行結果

解法2 遞迴

程式分析

通過遞迴呼叫計算高度

程式實現

def height(n):
    if n==0 :
        return 100
    else:
        return height(n-1)/2
sum1=0
count=10
for i in range(0,count):
    if i==0:
        sum1=sum1+height(i)
    else:
        sum1=sum1+2*height(i)
    #print(height(i))

print('總高度:tour = %.3f'%sum1)
print('第10次反彈高度:height = %.3f'%height(10))

執行結果

還有更多其他的解法,歡迎一起交流學習