首選,規定乙個包含有棧的類,對應抽象漢諾塔
class hanoistack然後,漢諾塔的搬運規則,其核心就是:當若只有乙個盤時,直接將盤從源塔柱搬移到目標塔柱,否則,遞迴上一步搬移,直至僅有乙個盤即,n=1,源塔柱 --> 目標塔柱;n>1,遞迴直至僅有乙個盤//對應漢諾塔的塔名稱,如:a,b,c
public stacktowerstack //棧,先進後出,跟漢諾塔的玩法很相符
}
/// /// 漢諾塔搬運規律再就是,搬運以及列印顯示,列印顯示的方式個人開心就好///
/// 總的盤數
/// 源塔柱
/// 目標塔柱
/// 中轉塔柱
private void hanoi(int n, hanoistack from, hanoistack to, hanoistack transfer)
}
private void hanoimove(hanoistack from, hanoistack to, hanoistack transfer)最後,函式呼叫
private void hanoi_start(int total)執行效果,測試用例是:15,漢諾塔的搬移步驟總數為,2 的 n 次方減 1,即:2^n-1,;hanoistack b = new hanoistack() ;
hanoistack c = new hanoistack() ;
while (total-- > 0) a.towerstack.push(total + 1); //初始化棧
hanoi(n, a, c, b);
}
當 n=15,搬移的步驟總數為:2^15-1 = 32767,
執行結果,搬移步驟總數為 32767,耗時 03分03秒 50毫秒
搬移過程,下圖所示,如:move no.1:a -> c via b ,
表示:將1號盤(no.1)從 a 塔柱通過 b 塔柱搬移到 c 塔柱
實際操作為:直接將 1號盤(no.1)從 a 塔柱搬移到 c 塔柱
author:韋小明
本文路徑:
python 漢諾塔 Python漢諾塔
import turtle class stack def init self self.items def isempty self return len self.items 0 def push self,item def pop self return self.items.pop def ...
漢諾塔遞迴方法
hannuota int n,char x,char y,char z x柱子是要移動的柱子,y柱子是x移動要借助的柱子,z柱子是要放在這個柱子上 在 hannuota函式中的遞迴判斷方法 如果是1個盤子 直接將a柱子上的盤子從a移到c 否則先將a柱子上的n 1個盤子借助c移到b 直接將a柱子上的盤...
漢諾塔的實現
漢諾塔是大學遇見的第乙個使用遞迴的問題。這個問題的解決方法充分展示了遞迴給程式帶來的遍歷 如果不使用遞迴的話,那麼就需要細緻的分析。這裡不談非遞迴的解法。漢諾塔問題介紹 在印度,有這麼乙個古老的傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時...