# Towers of Hanoi

Here is a Java implementation of the classic Towers of Hanoi problem.

```public class Hanoi {

private static int moves = 0; // The number of moves made.

/**
* Main method.
* @param args
*/
public static void main(String[] args) {
solve(4, 1, 3);
}

/**
* Moves n disks from the startPeg to the endPeg, following
* the rules of the Towers Of Hanoi.
*
* @param n
* @param startPeg
* @param endPeg
*/
public static void solve(int n, int startPeg, int endPeg) {

// Base case.
if (n== 0){
return;
}

// Define the temp peg.
int tempPeg = 6 - startPeg - endPeg;

// Recursive step.
solve(n-1, startPeg, tempPeg);
printMove(n, startPeg, endPeg); // Print what we moved.
solve(n-1, tempPeg, endPeg);
}

/**
* Prints the movement of the disk from a peg to another peg.
*
* @param disk
* @param fromPeg
* @param toPeg
*/
private static void printMove(int disk, int fromPeg, int toPeg)
{
// Increment the move count.
moves++;
// Print the move.
System.out.println("Move disk " + disk + " from peg " + fromPeg + " to peg " + toPeg + " | Move #: " + moves); // Print what we moved.
}

}
```