python遞迴函式的遞推和回溯
阿新 • • 發佈:2019-01-07
遞迴函式 recursion:函式直接或間接的呼叫自身,是python演算法中比較核心的概念。遞迴函式必須具備以下3個特點:1.直接或者間接呼叫自身 2.具有結束條件,防止遞迴外溢 3.程式碼規模逐漸減少
遞迴的遞推:遞迴每一次都是基於上一次進行下一次的執行。
遞迴的回溯:當遇到終止條件,則從最後往回一級一級的把值返回來。
def age(n):
if n == 1:
return 18
return age(n –1) + 2
print(age(5))
#age(5) = age(4) +2 第一次進入
#age(4) = age(3) +2 第二次進入
#age(3) = age(2) +2 第三次進入
#age(2) = age(1) +2 第四次進入
#age(1) = 18 第五次進入,此時達到結束的條件,遞迴終止
這是一個典型的遞迴遞推演算法,它的每一次執行都是基於上一次的結果。
def fx(n):
print("遞迴進入第",n,"層")
if n == 3:
return
fx(n + 1)
print("遞迴退出第",n,"層")
fx(1)
print("程式結束")
執行結果:
遞迴進入第 1 層
遞迴進入第 2 層
遞迴進入第 3 層
遞迴退出第 2 層
遞迴退出第 1 層
程式結束
這是一個典型的遞歸回溯演算法,滿足終止條件時,一級一級的把值返回來。
總結:遞迴必須要有一個明確的結束條件, 否則就變成死迴圈導致棧溢位,以上兩例都是以“if”語句作為結束條件的。每遞迴一次要解決一些事情,否則就失去了遞迴的意義。