⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exercise4_21.java

📁 Introduction to java programming 一书中所有编程练习部分的源码
💻 JAVA
字号:
// 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -