📄 exercise4_21.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 + -