函數遞歸

函數遞歸

函數遞歸指的是重複的「直接調用或者間接調用」函數自己,是一種函數嵌套調用的表現形式python

直接調用:函數內置,直接調用函數自己函數

num = 1
def func():
    global num
    print("遞歸深度", num)
    num +=1
    func()

間接調用:兩個函數之間相互調用間接形成遞歸操作系統

num = 1
def goo():
    global num
    print('from goo...',num)
    num += 1
    func()
def func():
    global num
    print('from func...',num)
    num += 1
    goo()

遞歸深度:python中有遞歸深度,限制遞歸次數,通常在998左右,每一臺的操做系統會根據硬盤來設置默認遞歸深度code

獲取遞歸深度:先調用 獲取操做系統資源的模塊 import sys,而後sys.getrecursionlimit()查看當前遞歸深度blog

設置遞歸深度:先調用 import sys,而後設置sys.setrecursionlimit(深度值)遞歸

單純的遞歸調用是沒有任何意義的,想要遞歸有意義必須遵循的兩個條件:資源

  • 遞推:重複的執行,每一次執行都拿到一個更接近於結果的結果,要有一個終止條件
  • 回溯:當遞推找到終止條件後開始一步一步往上回溯,獲得每個結果

img

age5 == age4 + 2
age4 == age3 + 2
age3 == age2 + 2
age2 == age1 + 2
age1 == 18  # 回溯遞推的結果
def age(n):
    if n == 1:
        return 18
    # 這裏寫return才能實現回溯
    return age(n - 1) + 2

res = age(5)
print(res)  # 26

相關文章
相關標籤/搜索