1. 程式人生 > >python遞迴函式的遞推和回溯

python遞迴函式的遞推和回溯

遞迴函式 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”語句作為結束條件的。每遞迴一次要解決一些事情,否則就失去了遞迴的意義。