這個是從新浪博客遷移到這里的http://blog.sina.com.cn/s/blog_1a566a7db0102zl3l.html
參考鏈接(轉載請注明出處):https://dmego.me/2016/10/16/hanoi.html
一、漢諾塔是什么?
漢諾塔(又稱河內塔)問題是源於印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根
金剛石柱子,在一根柱子上從下往上按照大小順序摞着64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。(來自百度百科)
key:三根柱子!一次只能移動一個!小圓盤上不能放大圓盤!
二、算法分析

- 先分析尋找規律
(n==1)
a→c
(n==2)
a→b
a→c
b→c

(n==3)
a→c
a→b
c→b
a→c
b→a
b→c
a→c
- 總結規律
中間的操作是把最大的那個盤子從a移到空着的c上
中間操作上面的所有操作可以看成是把n-1個盤子以漢諾塔的方式從a移到b(輔助塔c)
中間操作下面的所有操作可以看成是把n-1個盤子以漢諾塔的方式從b移到c(輔助塔a)
- 結合為算法
遞歸算法(Python)
def hanoi(n,a,b,c): #n個盤子,abc三個柱子,實習漢諾塔a到c
if n ==
1:
print(a,’→’,c)
else:
hanoi(n-1,a,c,b) #把n-1個盤子以漢諾塔的方式從a移到b(輔助塔c)
hanoi(1,a,b,c) #把最大的那個盤子從a移到空着的c上
hanoi(n-1,b,a,c) #把n-1個盤子以漢諾塔的方式從b移到c(輔助塔a)
程序步驟圖解
