汉诺塔游戏
移动盘子将一定数量的盘子从第一个地方放到第三个地方,且大盘子不能放在小盘子上面,一次只能移动一次盘子
/**
*
*/
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');
}
}
测试三个盘子的测试结果