Tower of Hanoi的理解

漢諾塔之前一直是知道過程,理解不了代碼。直到今天在知乎上看到一種理解方式,一下子就懂了。
如何理解漢諾塔的遞歸? - 郭風林的回答 - 知乎
https://www.zhihu.com/question/24385418/answer/128213752
作者:郭風林
鏈接:https://www.zhihu.com/question/24385418/answer/128213752
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

漢諾塔永遠只有三步:

image
image
image
image

<noscript>
image
image
image
image
image
image

圖中是最常見的五層(五珠)漢諾塔,
其實幾層都是一樣,這里設(shè)為n,
冰箱門永遠是漢諾塔上面的m=n-1層。

那么問題來了,怎樣把冰箱門打開?
即:怎樣把圖中的1至4號串珠從A柱移動到B柱?
(三根柱子從左至右依次為A、B、C,五顆串珠從小到大依次為1到5)

這又變成了一道m(xù)層漢諾塔的問題(m=n-1)。
你可以繼續(xù)用把大象裝冰箱分幾步的思路
去考慮m層漢諾塔的解法。

推導下去最終就得到了一個兩層漢諾塔該怎么移動的問題,

這個相信你閉著眼也知道該怎么搞了。

image.png

這個遞歸代碼里面, if disk == 1就是最后只剩一個盤子,直接移動到dest. 然后我們打開冰箱門,也就是把上面四個盤子當作門,一起移動到spare柱;然后我們把大象放進去,也就是把最大的盤子直接放到dest; 最后關(guān)上冰箱門,也就是把四個盤子從spare移動到dest. 則完成整個過程。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 引 前段時間做了一道題,要求實現(xiàn)漢諾塔游戲的自動解題動畫: 漢諾塔游戲應(yīng)該都了解規(guī)則: 1、將盤子全部移動到塔C2...
    Cloudox_閱讀 747評論 0 3
  • 重溫漢諾塔: n個盤子的漢諾塔問題的最少移動次數(shù)是2^n-1,即在移動過程中會產(chǎn)生2^n個系列。由于發(fā)生錯移產(chǎn)生的...
    碧影江白閱讀 1,629評論 2 3
  • 17歲原本是張揚肆意的青春場,你應(yīng)該如同四月的鶯飛草長一般來迅速飛長,如今的你卻像是被人攔腰斬斷的雜草一樣,無人看...
    愛上魚的土豆閱讀 279評論 2 2
  • 不早不遲 趕著清風 一瓣白色花蕊 一瓣黃色新衣 世界明朗的都是香 我曾苦苦的追尋心里的香 仿佛不曾失去的臉龐 與微...
    2016冰山來客閱讀 180評論 0 3
  • 都說“一物降一物”。自以為認真對待了,也盡了力去對應(yīng)付,但是在姐姐眼里,總感覺遠遠不夠,那份內(nèi)心深處藏的好好的懶散...
    熏莉閱讀 294評論 0 0

友情鏈接更多精彩內(nèi)容