用java实现汉诺塔游戏

作者: ldsea 分类: 程序生活 发布时间: 2008-04-12 13:20

用递归算法完成汉诺塔游戏的基本实现,代码是用Java写的

[code]public class Hanoi {

  /**
   * @param args
   */
  public static String x = "柱子1";

  public static String y = "柱子2";

  public static String z = "柱子3";

  public Hanoi() {

  }

  // 将针x上由小到大编号为1至n的n个棋子移动到z柱子上,y为辅助
  // 移动操作move(x,n,z)可定义为将编号为n的柱子从x移动到z
  public void hanoi(int n, String x, String y, String z) {
    if (n == 1)
      move(x, 1, z);
    else {
      hanoi(n – 1, x, z, y);
      move(x, n, z);
      hanoi(n – 1, y, x, z);
    }
  }

  public static void main(String[] args) {
    Hanoi game = new Hanoi();
    game.hanoi(5, x, y, z);

  }

  public void move(String x, int n, String z) {
    System.out.println("将编号为" + n + "的棋子从" + x + "移到" + z);
  }

}[/code]

The Result:
[color=#0000FF]将编号为1的棋子从柱子1移到柱子3
将编号为2的棋子从柱子1移到柱子2
将编号为1的棋子从柱子3移到柱子2
将编号为3的棋子从柱子1移到柱子3
将编号为1的棋子从柱子2移到柱子1
将编号为2的棋子从柱子2移到柱子3
将编号为1的棋子从柱子1移到柱子3
将编号为4的棋子从柱子1移到柱子2
将编号为1的棋子从柱子3移到柱子2
将编号为2的棋子从柱子3移到柱子1
将编号为1的棋子从柱子2移到柱子1
将编号为3的棋子从柱子3移到柱子2
将编号为1的棋子从柱子1移到柱子3
将编号为2的棋子从柱子1移到柱子2
将编号为1的棋子从柱子3移到柱子2
将编号为5的棋子从柱子1移到柱子3
将编号为1的棋子从柱子2移到柱子1
将编号为2的棋子从柱子2移到柱子3
将编号为1的棋子从柱子1移到柱子3
将编号为3的棋子从柱子2移到柱子1
将编号为1的棋子从柱子3移到柱子2
将编号为2的棋子从柱子3移到柱子1
将编号为1的棋子从柱子2移到柱子1
将编号为4的棋子从柱子2移到柱子3
将编号为1的棋子从柱子1移到柱子3
将编号为2的棋子从柱子1移到柱子2
将编号为1的棋子从柱子3移到柱子2
将编号为3的棋子从柱子1移到柱子3
将编号为1的棋子从柱子2移到柱子1
将编号为2的棋子从柱子2移到柱子3
将编号为1的棋子从柱子1移到柱子3[/color]

发表回复

您的电子邮箱地址不会被公开。