Python 遞迴函式 理解漢諾塔

2021-09-23 23:54:11 字數 2342 閱讀 7347

python的遞迴函式-理解漢諾塔

# 利用遞迴函式移動漢諾塔:

defmove

(n, a, b, c)

:if n ==1:

print

('move'

, a,

'-->'

, c)

else

: move(n-

1, a, c, b)

# 先把a號樁當做起點樁,b號樁當做終點樁,c號樁當做中間樁,移動a號樁上面n-1個盤子到b號樁

move(

1, a, b, c)

# 然後把a號樁剩下的最後乙個盤子移動到c號樁

move(n-

1, b, a, c)

# 最後把b號樁當做起點樁,a號樁當做中間樁,把n-1個盤子移動到c號樁(終點樁)

if __name__ ==

"__main__"

: move(3,

'a',

'b',

'c')

move a --> c

move a --> b

move c --> b

move a --> c

move b --> a

move b --> c

move a --> c

其實不要想那麼複雜,按照「塊」的思想,先把上面(n-1)塊盤子當做乙個盤子,然後再來思考,我用下面的一幅圖來告訴大家,其實真的不要想太多。

加上一行**估計會更加好理解**的流程。

# 利用遞迴函式移動漢諾塔:

defmove

(n, a, b, c)

:global g_n

if n ==1:

g_n = g_n +

1print

(g_n,

' move'

, a,

'-->'

, c)

else

: move(n-

1, a, c, b)

# 先把a號樁當做起點樁,b號樁當做終點樁,c號樁當做中間樁,移動a號樁上面n-1個盤子到b號樁

move(

1, a, b, c)

# 然後把a號樁剩下的最後乙個盤子移動到c號樁

move(n-

1, b, a, c)

# 最後把b號樁當做起點樁,a號樁當做中間樁,把n-1個盤子移動到c號樁(終點樁)

漢諾塔遞迴 Python

今天繼續學習遞迴 終於 終於把 去年學c語言沒看懂也沒去研究的漢諾塔解決了 感謝網上眾多的老鐵們的資料相助 和 宿舍學長的幫助,好了以下說理解後的思路 1 n 1 第1次 1號盤 a csum 1 次 2 n 2 第1次 1號盤 a b 第2次 2號盤 a c 第3次 1號盤 b c sum 3 次...

Python實現遞迴函式 漢諾塔

def move a,b,c,n if n 1 print a,c else move a,c,b,n 1 print a,c move b,a,c,n 1 move a b c 3 以上為python 實現漢諾塔遞迴問題,關於程式過程,可以根據以下三幅圖作為輔助理解 1 當只有乙個盤子的時候,只需...

Python筆記 遞迴函式 漢諾塔

1 如果乙個函式在內部呼叫自身本身,這個函式就是遞迴函式。2 使用遞迴函式需要注意防止棧溢位。在計算機中,函式呼叫是通過棧 stack 這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴呼叫的次數過多,會導致棧溢位。總體思路...