1. 程式人生 > >python全棧開發中級班全程筆記(第二模組) 第三部分 :遞迴

python全棧開發中級班全程筆記(第二模組) 第三部分 :遞迴

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 exceeded
while 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工具箱 sys
print(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

為什麼限制遞迴次數,因為函式在遞迴的過程中,不管多少次都是佔用 系統 執行記憶體的(因為遞迴就是執行函式本身 ,所以,是執行不完的)

一旦達到記憶體極限,就會導致吧系統記憶體撐爆,所以限制了遞迴次數