exercise4_21.java

来自「java程序设计 机械工业出版社 书籍代码」· Java 代码 · 共 53 行

JAVA
53
字号
// Exercise4_21.java: Find the number of moves for the
// Towers of Hanoi problem
import javax.swing.JOptionPane;

public class Exercise4_21 {
  public static void main (String args[]) {
    // Read number of disks, n
    String intString = JOptionPane.showInputDialog(
      "Enter number of disks:");

    // Convert string into integer
    int n = Integer.parseInt(intString);

    System.out.println("The moves are:");
    int numOfMoves = moveDisks(n, 'A', 'B', 'C');
    System.out.println("The nuber of moves is " + numOfMoves);

    System.exit(0);
  }

  public static int moveDisks(int n, char fromTower, char toTower, char auxTower) {
    if (n == 1) { //stopping condition
      System.out.println("Move disk " + n + " from " + fromTower + " to " + toTower);
      return 1;
    }
    else {
      int i1 = moveDisks(n - 1, fromTower, auxTower, toTower);
      System.out.println("Move disk " + n + " from " + fromTower + " to " + toTower);
      i1++;
      return i1 + moveDisks(n - 1, auxTower, toTower, fromTower);
    }
  }

  /* what is wrong with this implementation?
     public static int moveDisks(int n, char fromTower, char toTower, char auxTower) {
    int numOfMoves = 0;

    if (n==1) //stopping condition {
      System.out.println("Move disk "+n+" from "+fromTower+" to "+toTower);
      numOfMoves++;
    }
    else {
      moveDisks(n-1, fromTower, auxTower, toTower);
      System.out.println("Move disk "+n+" from "+fromTower+" to "+toTower);
      numOfMoves++;
      moveDisks(n-1, auxTower, toTower, fromTower);
    }

    return numOfMoves;
  }*/
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?