使用遞迴演算法實現漢諾塔

2021-06-28 21:35:41 字數 771 閱讀 8795

漢諾塔原理解析:

當只有乙個盤子的時候,只需要從將a塔上的乙個盤子移到c塔上。

當a塔上有兩個盤子是,先將a塔上的1號盤子(編號從上到下)移動到b塔上,再將a塔上的2號盤子移動的c塔上,最後將b塔上的小盤子移動到c塔上。

當a塔上有3個盤子時,先將a塔上編號1至2的盤子(共2個)移動到b塔上(需借助c塔),然後將a塔上的3號最大的盤子移動到c塔,最後將b塔上的兩個盤子借助a塔移動到c塔上。

當a塔上有n個盤子是,先將a塔上編號1至n-1的盤子(共n-1個)移動到b塔上(借助c塔),然後將a塔上最大的n號盤子移動到c塔上,最後將b塔上的n-1個盤子借助a塔移動到c塔上。

綜上所述,除了只有乙個盤子時不需要借助其他塔外,其餘情況均一樣。

[cpp]view plain

copy

"font-size:14px;"

>#include 

using

namespace

std;  

inthannuota(

intn,string a,string b,string c)  

else

return

1;  

}  int

main(

intargc, 

const

char

* argv) 

漢諾塔 遞迴演算法

個人覺得漢諾塔這個遞迴演算法比電子老鼠的難了一些,不過一旦理解了也還是可以的,其實網上也有很多 可以直接參考。記得大一開始時就做過漢諾塔的習題,但是那時 寫得很長很長,也是不理解遞迴的結果。現在想起來漢諾塔的演算法就3個步驟 第一,把a上的n 1個盤通過c移動到b。第二,把a上的最下面的盤移到c。第...

漢諾塔遞迴演算法

大學的時候專業課程很差,指導大二學習演算法設計的時候,發現專業課裡比較有趣的一門。專心學習了一學期 最近在學習python發現了乙個遞迴演算法很迷茫,遂研究了一下。簡單來說明一下 首先漢諾塔的規則是1 每次移動一塊 2 小木塊只能放在大木塊上 3 將所有木塊從a柱子移動c柱子木塊上 用幾個變數和常量...

漢諾塔 遞迴

個人理解遞迴函式的基本要求就是,函式中呼叫函式本身,滿足特定的條件後返回。include include include include include include include include include include include include include 標頭檔案引用的較多...