The game consists of three sticks, on which several perforated discs are placed, all of different sizes.
At the beginning, all the discs are on the left stick, arranged in order of size, with the largest disc on the bottom and the smallest on the top.
The object of the game is to move the entire stack of discs to the right stick.
However, only a smaller disc may be placed on a larger one, a larger one on a smaller one is not allowed.
In the move
method, it first moves the disc - 1
discs from the from
peg to the aux
peg using the recursive call. Then it moves the disc
from the from
peg to the to
peg. Finally, it moves the disc - 1
discs from the aux
peg to the to
peg using the recursive call.
In the main
method, it calls the move
method with disc
equals to 4, from
peg equals to “left”, to
peg equals to “middle”, and aux
peg equals to “right”.
public class TowerOfHanoi {
public static void move(int disc,
String from,
String to,
String aux) {
if (disc > 0) {
move(disc - 1, from, aux, to);
System.out.println("Disc " + disc + ": move from " + from + " to " + to);
move(disc - 1, aux, to, from);
}
}
public static void main(String[] args) {
move(4, "left", "middle", "rigth");
}
}
Disc 1: move from left to rigth
Disc 2: move from left to middle
Disc 1: move from rigth to middle
Disc 3: move from left to rigth
Disc 1: move from middle to left
Disc 2: move from middle to rigth
Disc 1: move from left to rigth
Disc 4: move from left to middle
Disc 1: move from rigth to middle
Disc 2: move from rigth to left
Disc 1: move from middle to left
Disc 3: move from rigth to middle
Disc 1: move from left to rigth
Disc 2: move from left to middle
Disc 1: move from rigth to middle