算法与数据结构复习——递归实现计算汉诺塔游戏步骤

 汉诺塔游戏

 移动盘子将一定数量的盘子从第一个地方放到第三个地方,且大盘子不能放在小盘子上面,一次只能移动一次盘子
 

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

测试三个盘子的测试结果

猜你喜欢

转载自blog.csdn.net/braveandbeauty/article/details/81169765