1、使用递归实现
public class HanoiTower {
/**
* 移动盘子
* topN:移动的盘子数
* from:起始塔座
* inter:中间塔座
* to:目标塔座
*/
public static void doTower(int topN,char from,char inter,char to) {
if(topN == 1) {
System.out.println("盘子1,从"+ from + "塔座到" + to + "塔座");
} else {
doTower(topN - 1, from, to, inter);
System.out.println("盘子" + topN +",从" + from + "塔座到" + to + "塔座" );
doTower(topN - 1, inter, from, to);
}
}
}
二、调用
public class TestHanoiTower {
public static void main(String[] args) {
HanoiTower.doTower(5, 'A', 'B', 'C');
}
}
三、输出
盘子1,从A塔座到C塔座
盘子2,从A塔座到B塔座
盘子1,从C塔座到B塔座
盘子3,从A塔座到C塔座
盘子1,从B塔座到A塔座
盘子2,从B塔座到C塔座
盘子1,从A塔座到C塔座
盘子4,从A塔座到B塔座
盘子1,从C塔座到B塔座
盘子2,从C塔座到A塔座
盘子1,从B塔座到A塔座
盘子3,从C塔座到B塔座
盘子1,从A塔座到C塔座
盘子2,从A塔座到B塔座
盘子1,从C塔座到B塔座
盘子5,从A塔座到C塔座
盘子1,从B塔座到A塔座
盘子2,从B塔座到C塔座
盘子1,从A塔座到C塔座
盘子3,从B塔座到A塔座
盘子1,从C塔座到B塔座
盘子2,从C塔座到A塔座
盘子1,从B塔座到A塔座
盘子4,从B塔座到C塔座
盘子1,从A塔座到C塔座
盘子2,从A塔座到B塔座
盘子1,从C塔座到B塔座
盘子3,从A塔座到C塔座
盘子1,从B塔座到A塔座
盘子2,从B塔座到C塔座
盘子1,从A塔座到C塔座