python全棧開發中級班全程筆記(第二模組) 第三部分 :遞迴
阿新 • • 發佈:2018-12-14
python全棧開發筆記第二模組
第三部分 :遞迴
一、遞迴定義及使用
定義:什麼叫遞迴?遞迴就是在函式的執行中呼叫自己
下面程式碼舉例說明:
例: def recursion(n): #設定計數 print(n) #為了能驗證呼叫自己多少次,列印計數 recursion(n+1) #每次執行完加一 recursion(1)
執行程式碼結果: 1 2 3 #每執行一次就會+1,就像 for 迴圈(死迴圈到邊界)
....... 996 997 998raceback (most recent call last): RecursionError: maximum recursion depth exceededwhile calling a Python object #發現報錯,報錯的意思是說遞迴到了最大 極限(系統預設1000次,除去上下被執行的2次,正好998次)
檢視系統預設遞迴層:
例: import sys #匯入python工具箱 sys print(sys.getrecursionlimit()) #列印系統預設遞迴層 def recursion(n): #再次執行 print(n) recursion(n+1) recursion(1)
執行程式碼結果: 1000 #列印系統預設遞迴層是1000次 1 2 3 #每執行一次就會+1,就像 for 迴圈(死迴圈到邊界) ....... 996 997 998raceback (most recent call last): RecursionError: maximum recursion depth exceeded while calling a Python object
修改系統預設遞迴層:
例: import sys #匯入python工具箱 sysprint(sys.getrecursionlimit()) #列印系統預設遞迴層 sys.setrecursionlimit(1500) #系統預設遞迴層修改方法(修改成1500) def recursion(n): print(n) recursion(n+1) #再次執行 recursion(1)
執行程式碼結果: 1 2 ....... 996 ...... 1497 #發現已經修改了設定遞迴層 (1500) 1498raceback (most recent call last): RecursionError: maximum recursion depth exceeded while calling a Python object
為什麼限制遞迴次數,因為函式在遞迴的過程中,不管多少次都是佔用 系統 執行記憶體的(因為遞迴就是執行函式本身 ,所以,是執行不完的)
一旦達到記憶體極限,就會導致吧系統記憶體撐爆,所以限制了遞迴次數