1. 程式人生 > >演算法與資料結構複習——遞迴實現計算漢諾塔遊戲步驟

演算法與資料結構複習——遞迴實現計算漢諾塔遊戲步驟

 漢諾塔遊戲

 移動盤子將一定數量的盤子從第一個地方放到第三個地方,且大盤子不能放在小盤子上面,一次只能移動一次盤子
 

/**
 * 
 */
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');
	}
}

測試三個盤子的測試結果