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