- 有 A、B、C 三根柱子
- 当前 A 柱套了 n 个圆环
- 由上至下这 n 个圆环的直径依次变大
- 要将所有圆环从 A 柱移到 C 柱
- 显而易见 B 柱是辅助
- 每次移动 1 个圆环
- 始终保持 小圆环在上,大圆环在下。
public class Hanoi {
// 描述移动过程
// n 个圆环
// a 是起始柱
// b 是辅助柱
// c 是目的柱
public void move(int n, char a, char b, char c) {
if (1 == n) {
System.out.println("From " + a + " To " + c);
} else {
move(n - 1, a, c, b);
move(1, a, b, c);
move(n - 1, b, a, c);
}
}
public static void main(String[] args){
Hanoi hanoi = new Hanoi();
hanoi.move(4, 'A', 'B', 'C');
}
}
Illustration of a recursive solution for the Towers of Hanoi puzzle with 4 disks
网友评论