- 有 A、B、C 三根柱子
- 當前 A 柱套了 n 個圓環(huán)
- 由上至下這 n 個圓環(huán)的直徑依次變大
- 要將所有圓環(huán)從 A 柱移到 C 柱
- 顯而易見 B 柱是輔助
- 每次移動 1 個圓環(huán)
- 始終保持 小圓環(huán)在上,大圓環(huán)在下。
public class Hanoi {
// 描述移動過程
// n 個圓環(huá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