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 這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴呼叫的次數過多,會導致棧溢位。總體思路...