Java Reference
In-Depth Information
Listing 18.8 gives a program that prompts the user to enter the number of disks and invokes
the recursive method moveDisks to display the solution for moving the disks.
L ISTING 18.8
TowerOfHanoi.java
1 import java.util.Scanner;
2
3 public class TowerOfHanoi {
4 /** Main method */
5 public static void main(String[] args) {
6 // Create a Scanner
7 Scanner input = new Scanner(System.in);
8 System.out.print( "Enter number of disks: " );
9
int n = input.nextInt();
10
11 // Find the solution recursively
12 System.out.println( "The moves are:" );
13
moveDisks(n, 'A' , 'B' , 'C' );
14 }
15
16 /** The method for finding the solution to move n disks
17 from fromTower to toTower with auxTower */
18 public static void moveDisks( int n, char fromTower,
19 char toTower, char auxTower) {
20 if (n == 1 ) // Stopping condition
21 System.out.println( "Move disk " + n + " from " +
22 fromTower + " to " + toTower);
23 else {
24 moveDisks(n - 1 , fromTower, auxTower, toTower);
25 System.out.println( "Move disk " + n + " from " +
26 fromTower + " to " + toTower);
27
base case
recursion
moveDisks(n - 1 , auxTower, toTower, fromTower);
recursion
28 }
29 }
30 }
Enter number of disks: 4
The moves are:
Move disk 1 from A to C
Move disk 2 from A to B
Move disk 1 from C to B
Move disk 3 from A to C
Move disk 1 from B to A
Move disk 2 from B to C
Move disk 1 from A to C
Move disk 4 from A to B
Move disk 1 from C to B
Move disk 2 from C to A
Move disk 1 from B to A
Move disk 3 from C to B
Move disk 1 from A to C
Move disk 2 from A to B
Move disk 1 from C to B
 
 
Search WWH ::




Custom Search