初學python演算法100例-案例19 球高空落地 彈跳N次後高度計算
阿新 • • 發佈:2021-05-09
題目:計算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))
執行結果
還有更多其他的解法,歡迎一起交流學習