汉诺塔是由三根杆子A,B,C组成的。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:每次只能移动一个圆盘;大盘不能叠在小盘上面。
/**
* 汉诺塔
*
*/
public class HanoiTower {
private static int count = 1;
public static void hanoiTower(int n, char a, char b, char c) {
if (n == 1) {
move(1, a, c);
} else {
hanoiTower(n - 1, a, c, b);
move(n, a, c);
hanoiTower(n - 1, b, a, c);
}
}
public static void move(int n, char f, char t) {
System.out.println("第"+count+"步: "+"让第"+n+"个盘子从"+f+"柱子移到"+t+"柱子");
count++;
}
public static void main(String[] args) {
hanoiTower(10,'A', 'B', 'C');
}
}