Python打卡第九天

code uchiha發表於2020-09-27

漢諾塔:

有三根頂針,在第一根頂針上放著若干個盤子,且小盤子在大盤子上面,現把這些盤子從第一根頂針上移動到第三根頂針上,且小盤子依舊在大盤子之上。在移動的過程中可以藉助第二根頂針,每次只能移動一個盤子,且小盤子要在大盤子上面,如何移動才能使所有盤子從第一根頂針到第三根頂針上。

分析:

採用迭代的方法,第64個可以考慮第63個如何實現,第63個可以考慮62個如何實現……如此反覆,最後遞迴至一個如何實現。因此可以將前n-1個放在中轉柱上,將剩下的一個放到目標柱子上

程式碼:

def hanoni(n, a, b, c):
    if n == 1:
        print(a, "->", c)
        return
    hanoni(n - 1, a, c, b)
    hanoni(1, a, b, c)
    hanoni(n - 1, b, a, c)


level = int(input("請輸入漢諾塔層數:"))
hanoni(level, 'a', 'b', 'c')