python遞迴函式的執行過程

2022-05-25 09:24:08 字數 1776 閱讀 9690

舉例:

def nove(n,a,b,c):

if n == 1:

print(a,'------------>',c)

else:

nove(n-1,a,c,b)

nove(1,a,b,c)

nove(n-1,b,a,c)

執行輸出結果:

nove(3, 'a', 'b', 'c')

# a --> c

# a --> b

# c --> b

# a --> c

# b --> a

# b --> c

# a --> c

執行過程詳解:

1 def nove(n, a='a', b='b', c='c'):

2 if n == 1:

3 return print(a, "->", c)

4 else:

5 nove((n-1), a, c, b)

6 print(a, "->", c)

7 nove((n-1), b, a, c)

9 nove(3)

第6行print(a, "->", c)可以寫做nove(1, a, b, c),個人感覺可以不用這麼寫,print(a, "->", c)這樣可以讓**少跑兩步。

開始執行nove( 3 )

nove 函式代入 『 行9』 ( n = 3 )引數(3, a='a', b='b', c='c')

第一步執行 『行2 - 3』if n == 1:......

n != 1, 『行2 - 3』越過

第二步執行 『行4』else:

執行 『行5』, 第一次遞迴開始,((n-1), a, c, b)回到函式最初代入(3, a='a', b='b', c='c'),得出引數為(2, 'a', 'c', 'b'),【!注意: 此時『行1 』(3, a='a', b='b', c='c')在 『行5』 遞迴回到函式最初執行後已改變為(2, a='a', b='c', c='b')

執行 『行2 - 3』 ,n != 1, 『行2 - 3』 越過

(a, "->", c)代入nove函式(3, a='a', b='b', c='c')並輸出,即a -> c

執行 『 行7』 ,第二次遞迴開始,((n-1), b, a, c)代入(3, a='a', b='b', c='c')得出引數為(2, 'b', 'a', 'c')【!注意: 此時 『行1 』(3, a='a', b='b', c='c')在 『行7』 遞迴回到函式最初執行後已改變為(2, a='b', b='a', c='c')

遞迴的執行過程

1 if root null 4 int left maxdeepth root.left 5 int right maxdeepth root.right 6 return left right?left 1 right 1 這是求樹的深度。那麼程式執行到第四行時,會不會先將left的遞迴呼叫壓入...

函式的遞迴過程

函式的遞迴就是函式通過自己迴圈呼叫自己來完成某項功能,我們在自定義函式的時候也經常會用到遞迴功能,那麼當函式在進行遞迴的時候內部過程都有哪些呢?我們以這個程式為例 age int n else tmp age n 1 2 return tmp 函式的遞迴就是函式通過自己迴圈呼叫自己來完成某項功能,我...

遞迴的概念 函式遞迴過程

直接或間接地呼叫自身的演算法稱為遞迴演算法。用函式自身給出定義的函式稱為遞迴函式。使用遞迴技術往往會使 更簡潔,使演算法的描述更清晰且容易理解。例 1 階乘函式 階乘函式遞迴的定義為 當n 0時,n 1,這是這個函式的初始條件,是非遞迴定義的,是此遞迴函式的退出條件。這個遞迴函式在執行時,會不斷的呼...