對漢諾塔遞迴演算法的研究

2021-06-19 15:05:26 字數 905 閱讀 9432

漢諾塔問題的遞迴解法是乙個非常經典的演算法。

一、遞迴描述

1 、當disc=1時:

將盤子從x柱直接移到z柱;

完成。                     

2、當disc=2時:

首先將編號為1的盤子從x柱移到y柱;

其次將編號為2的盤子從x柱移到z柱;

最後將編號為1的盤子從y柱移到z柱;

完成。3、由2推廣可知,當disc=n時:

首先將n-1個盤子從x柱移到y柱;

其次將編號為n的盤子從x柱移到z柱;

最後將n-1個盤子從y柱移到z柱;

完成。

二、利用c++實現該遞迴演算法

string hanoi(int number, string x, string y, string z)

else

return result;

}

三、利用uml序列圖描述遞迴演算法的執行過程(disc=3)

四、演算法測試——求解河內塔問題

河內塔問題就是disc=8的漢諾塔問題。

結算結果

由此可見,漢諾塔遞迴演算法的時間複雜度為

漢諾塔 遞迴演算法

個人覺得漢諾塔這個遞迴演算法比電子老鼠的難了一些,不過一旦理解了也還是可以的,其實網上也有很多 可以直接參考。記得大一開始時就做過漢諾塔的習題,但是那時 寫得很長很長,也是不理解遞迴的結果。現在想起來漢諾塔的演算法就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 標頭檔案引用的較多...