public class Hanoi { public static void hanoi (int n) { // Make use of Java's overloading of methods by argument type. System.out.println("--------------------------------------------------------"); System.out.println("Instructions for solving hanoi(" + n + ", A, B, C):"); hanoi(n, "A", "B", "C"); } public static void hanoi (int n, String source, String dest, String spare) { if (n > 0) { hanoi(n - 1, source, spare, dest); // Move n-1 disks to spare peg. moveDisk(n, source, dest); // Move largest disk to goal peg. hanoi(n - 1, spare, dest, source); // Move n-1 disks to goal peg. } } public static void moveDisk (int disk, String source, String dest) { // Doesn't actually move a disk, but prints out an instruction to do so. System.out.println("Move disk " + disk + " from peg " + source + " to peg " + dest); } public static void main(String [] args) { if (args.length != 1) { System.out.println("Usage: java Hanoi n"); System.exit(-1); } int n = Integer.parseInt(args[0]); hanoi(n); } }