Tower of Hanoi

  1. ABC 三根柱子
  2. 当前 A 柱套了 n 个圆环
  3. 由上至下这 n 个圆环的直径依次变大
  4. 要将所有圆环从 A 柱移到 C
  5. 显而易见 B 柱是辅助
  6. 每次移动 1 个圆环
  7. 始终保持 小圆环在上大圆环在下
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');
    }
}
Tower of Hanoi_第1张图片
Illustration of a recursive solution for the Towers of Hanoi puzzle with 4 disks

你可能感兴趣的:(Tower of Hanoi)