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







 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章