演算法與資料結構複習——遞迴實現計算漢諾塔遊戲步驟
阿新 • • 發佈:2019-01-30
漢諾塔遊戲
移動盤子將一定數量的盤子從第一個地方放到第三個地方,且大盤子不能放在小盤子上面,一次只能移動一次盤子
/** * */ package ch07; /** * @author lixin * @date 2018年7月23日 * @Description 漢諾塔遞迴實現 */ public class HanoiTower { // 計算漢諾塔的實現步驟 /** * 移動盤子將一定數量的盤子從第一個地方放到第三個地方,且大盤子不能放在小盤子上面,一次只能移動一次盤子 * * @param count:移動的盤子書 * @param one:起始塔座 * @param two:中間塔座 * @param three:目標塔座 */ public static void doTower(int count, char one, char two, char three) { if (count == 1) { System.out.println("盤子1從" + one + "塔座移動到" + three + "塔座"); } else { doTower(count-1, one, three, two); System.out.println("盤子"+count+"從"+one+"塔座移動到" + three + "塔座"); doTower(count-1, two, one, three); } } public static void main(String[] args) { HanoiTower.doTower(3, 'A', 'B', 'C'); } }
測試三個盤子的測試結果