1. 程式人生 > >遞迴函式輸出漢諾塔移動步驟

遞迴函式輸出漢諾塔移動步驟

今天在學Python語言的遞迴函式的時候,有道題是輸出漢諾塔移動步驟,思索十多分鐘無頭緒,看了別人的評論才恍然大悟。看來以後需要多多做些邏輯題才鍛鍊自己的邏輯思維。

def move(n,a,b,c):
if n==1:
print (a,'-->',c) #這其實是隻有一個圓盤需要從A到C的情況。所有遞迴,最終都是走到這一步。
return #這是結束遞迴,省略了None。沒有這句的話,遞迴沒辦法結束。
move(n-1,a,c,b) #將A柱的n-1個盤移到B柱,這裡毫無爭議。注意形參順序變化了。
print a,'-->',c #這句話才是第一個柱子的第n個圓盤移動到目標柱子。
move(n-1,b,a,c))#過渡柱子B上(n-1)個圓盤B遞迴移動到目標柱子C