
/**
 * Title:        Chapter 4, "Methods"
 * Description:  Examples for Chapter 4
 * Copyright:    Copyright (c) 2000
 * Company:      Armstrong Atlantic State University
 * @author Y. Daniel Liang
 * @version 1.0
 */

// TowersOfHanoi.java: Find solutions for the Towers of Hanoi problem
package chapter4;

import chapter2.MyInput;

public class TowersOfHanoi
{
  // Main method
  public static void main(String[] args)
  {
    // Read number of disks, n
    System.out.println("Enter number of disks");
    int n = MyInput.readInt();

    // Find the solution recursively
    System.out.println("The moves are:");
    moveDisks(n, 'A', 'B', 'C');
  }

  // The method for finding the solution to move n disks
  // from fromTower to toTower with auxTower
  public static void moveDisks(int n, char fromTower,
    char toTower, char auxTower)
  {
    if (n==1) // Stopping condition
      System.out.println("Move disk " + n + " from " +
        fromTower+" to " + toTower);
    else
    {
      moveDisks(n-1, fromTower, auxTower, toTower);
      System.out.println("Move disk " + n + " from " +
        fromTower + " to " + toTower);
      moveDisks(n-1, auxTower, toTower, fromTower);
    }
  }
}