python之遞迴
阿新 • • 發佈:2020-11-29
在函式內部可以呼叫其他函式,如果在函式內部呼叫自己,這個函式被稱為遞迴函式。
遞迴函式在計算階乘及斐波那契數列,漢諾塔等問題非常便利。
注意:在計算機中函式呼叫是通過棧來實現的,遞迴函式也同樣,對遞迴函式過深的呼叫可能會引起棧溢位,需要注意。
下面是用遞迴解決小球下落所經距離的計算。
#!/usr/bin/env python # _*_coding:utf-8 _*_ # 遞迴 """ 1.一個球從100米高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在第10次落地時, 共經過多少米?請用遞迴實現! 2.小明有200元錢 打算買200本書,A類書籍5元一本,B類書籍3元一本,C類書籍1元2本,請用程式 算出小明一共有多少種買法?(面試筆試題)""" # 遞迴 # 1. def mile(n): if n == 1: return 100 return mile(n - 1) + 100 // (2 ** (n - 1)) * 2 # 2. def buy_count(): count = 0 for i in range(200 // 5 + 1): # i 表示可以買的a種書的所有情況 0,1,2,3.。。。。40 注意加1是為了取到40 for j in range(200 // 3 + 1): # j 表示可以買的b類書的所有情況 從0到66 k = 200 - i - j #k表示c類書 if 5 * i + 3 * j + 0.5 * k <= 200: count += 1 return count if __name__ == '__main__': print(mile(10)) print(buy_count())