遞歸函數的優點是定義簡單,邏輯清晰。理論上,所有的遞歸函數都可以寫成循環的方式,但循環的邏輯不如遞歸清晰。
簡單舉例遞歸函數:
1 def dg(number): 2 if number/2 > 1: 3 print(number/2) 4 dg(number/2) 5 dg(10) 6 7 8 5.0 9 2.5 10 1.25
斐波那契數列:第三位是前兩位的相加
1 def func(arg1, arg2,stop): 2 if arg1 == 0: 3 print(arg1, arg2) 4 arg3 = arg1 + arg2 5 print(arg3) 6 if arg3 > stop : 7 return "bingo" 8 func(arg2, arg3,stop) 9 10 func(0, 1,300) 11 12 13 0 1 14 1 15 2 16 3 17 5 18 8 19 13 20 21 21 34 22 55 23 89 24 144 25 233 26 377
遞歸函數常用於檢索大量數據,比如檢索一個擁有300萬個數的列表,從中查找某個數是否存在,如果用for遍歷,會嚴重占用計算機計算能力,那么我們可以通過遞歸函數來減少搜索量。
