漢諾塔實現方法

2022-01-29 12:46:29 字數 1218 閱讀 5635

首選,規定乙個包含有棧的類,對應抽象漢諾塔

class hanoistack

//對應漢諾塔的塔名稱,如:a,b,c

public stacktowerstack //棧,先進後出,跟漢諾塔的玩法很相符

}

然後,漢諾塔的搬運規則,其核心就是:當若只有乙個盤時,直接將盤從源塔柱搬移到目標塔柱,否則,遞迴上一步搬移,直至僅有乙個盤即,n=1,源塔柱 --> 目標塔柱;n>1,遞迴直至僅有乙個盤

/// /// 漢諾塔搬運規律

///

/// 總的盤數

/// 源塔柱

/// 目標塔柱

/// 中轉塔柱

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)

;hanoistack b = new hanoistack() ;

hanoistack c = new hanoistack() ;

while (total-- > 0) a.towerstack.push(total + 1); //初始化棧

hanoi(n, a, c, b);

}

執行效果,測試用例是:15,漢諾塔的搬移步驟總數為,2 的 n 次方減 1,即:2^n-1,

當 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柱子上的盤...

漢諾塔的實現

漢諾塔是大學遇見的第乙個使用遞迴的問題。這個問題的解決方法充分展示了遞迴給程式帶來的遍歷 如果不使用遞迴的話,那麼就需要細緻的分析。這裡不談非遞迴的解法。漢諾塔問題介紹 在印度,有這麼乙個古老的傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時...