python筆記(遞迴函式)
阿新 • • 發佈:2018-11-19
遞迴函式
https://www.processon.com/(作圖)
1.最大遞迴深度預設是997
2.可以修改遞迴預設深度
例:
import sys
sys.setrecursionlimit(1000)
@遞迴缺點;佔記憶體
@遞迴優點:讓程式碼變簡單
@逐次向下呼叫,返回值依次向上迴歸
例題:
1.二分查詢演算法 必須處理有序的列表
l = [2,3,4,5,6,8,10,12,13,15,16,17,19,22,25,27,29,34,37] def find(l,aim,start = 0,end = None): end = len(l) if end is None else end mid_index = (end - start) // 2 + start if start <= end: if l[mid_index] < aim: find(l,aim,start = mid_index + 1,end = end) elif l[mid_index] > aim: find(l,aim,start = start,end = mid_index -1) else: print('找到了!',mid_index,aim) else: print('找不到這個值!') find(l,7)
2.三級選單程式碼
3.斐波那契(從結果往前推)
def fib(n):
if n == 1 or n == 2:
return 1
return fib(n -1) +fib(n -2) #雙遞迴
print(fib(40))
4.階乘
def func(n): if n == 1: #由所傳引數向向下推,推到最後的一個引數作為判斷條件 return 1 return func(n-1)*n #由條件的性質可以嘗試推測 print(func(8))