相傳,大梵天在創(chuàng)建世界的時候,弄了三根柱子,在其中一根柱子上從下往上按大小順序放著64個黃金圓盤,他命令婆羅門把這些圓盤從一個柱子上移到另一根柱子上,并且在移動的過程中始終保證大圓盤在下面,每次只能移動一個。
問題整理:
有一個梵塔,塔內(nèi)有A、B、C三根柱子,A柱子上有N個圓盤,盤子大小不等,大的在下,小的在上(如圖)。把這些個盤子從A座移到C座,中間可以借用B座但每次只能允許移動一個盤子,并且在移動過程中,3根柱子上的圓盤始終保持大盤在下,小盤在上。要求給出移動方案,并打印每移動一步后的狀態(tài)。

思路解析:
A柱上還有N個圓盤,那么我們需要做的就是先把上面的N-1個圓盤放到柱子B上(可以把柱子C當做一根輔助柱子,具體怎么移動,現(xiàn)在可以不用考慮);然后把柱子A上最大的圓盤移動到柱子C上去(此時C上是沒有圓盤的,B上有N-1個圓盤);現(xiàn)在問題就變成了怎么把柱子B上的N-1個圓盤移動到柱子C上去。
同樣的道理,B柱子上的N-1個圓盤移動和A柱子上N個圓盤移動,本質(zhì)上是一樣的。可以把柱子C當做輔助柱子,把柱子B上面的N-2個圓盤先移動到柱子A上,然后把柱子B上最大的圓盤移動到柱子C上;然后問題就變成了怎么把柱子A上N-2個圓盤移動到C上去。
。
。
。
到最后一個圓盤怎樣移動。這樣就一層一層的在往下找解決方案,也就是遞歸的思想。
代碼實現(xiàn):

