漢諾塔:漢諾塔(又稱河內塔)問題是源於印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞着64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。
不追求漢諾塔具體移動次數,而是尋找漢諾塔圓盤移動的步驟。
假設有A,B,C三根柱子,A柱子上有n個圓盤,求將這些圓盤移動到C柱上的步驟。
對該問題可以做如下理解:
(借助B將圓盤從A移動到C上)
1.將n-1片圓盤從A移動到B上
2.將第n片圓盤從A移動到C上
3.將n-1片圓盤從B移動到C上
將之變為可運行的代碼為:
def move(n, a, b, c): if n == 1: print(a, '--->', c) return else: move(n-1, a, c, b) move(1, a, b, c) move(n-1, b, a, c)
第一次遞歸結果: A:0個 B:n-1個 C:1個
第二次遞歸結果: A:n-2個 B: 0個 C:2個
........
這是我對漢諾塔移動問題的理解,如果我的思路有問題,希望各位大佬指點指點!