天天看點

66. Python中的遞歸算法和階乘遞歸函數

目錄

遞歸函數

遞歸函數

一種基本算法

       遞歸函數指的是: 自己調用自己的函數, 在函數體内部直接或間接的自己調用自己; 遞歸類似于大家中學練習過的數學歸納法;

每個遞歸函數必須包含兩個部分:

=> 終止條件

表示遞歸什麼時候結束; 一般用于傳回值, 不再調用自己;

=> 遞歸步驟

把第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







           

繼續閱讀