目錄
遞歸函數
遞歸函數
一種基本算法
遞歸函數指的是: 自己調用自己的函數, 在函數體内部直接或間接的自己調用自己; 遞歸類似于大家中學練習過的數學歸納法;
每個遞歸函數必須包含兩個部分:
=> 終止條件
表示遞歸什麼時候結束; 一般用于傳回值, 不再調用自己;
=> 遞歸步驟
把第n步的值和第n-1步相關聯;
遞歸函數由于會建立大量的函數對象, 過量的消耗記憶體和運算能力, 在處理大量資料時, 謹慎使用;
#測試遞歸函數基本原理
def test01():
print("test01")
test01() #如果這裡直接調用自己test01(),會不斷的開辟新的棧幀,導緻棧空間滿,進而報錯,是以必須要有停止條件
print("########") #永遠列印不出來,先進後出,後進先出,第一個打開的方法,最後才執行完畢
def test02():
print("test02")
# test01();
def test03(n):
print("test03:",n)
if n == 0:
print("over")
else:
test03(n-1)
print("test03***:",n) #先進後出,後進先出,第一個打開的方法,最後才執行完畢
test03(5)
#用遞歸來計算階乘,分析幾何
def test04(n):
'''用遞歸來計算階乘'''
if n == 1: #終止條件
return 1
else:
return n*test04(n-1) #遞歸步驟
result = test04(6)
print(result) #720
輸出:
D:\wwwroot\pyiteam\venv\Scripts\python.exe D:/wwwroot/pyiteam/mypy01.py
test03: 5
test03: 4
test03: 3
test03: 2
test03: 1
test03: 0
over
test03***: 0
test03***: 1
test03***: 2
test03***: 3
test03***: 4
test03***: 5
720
Process finished with exit code 0