header

Towers of Hanoi

//---------------------------------------------------------
// File: Towers of Hanoi 1.cpp
//
// Purpose: Solve the towers of Hanoi puzzle. The user
//   enters the number of disks.
//
// Author: D. Searls
//         Asbury College
//         April 1998
//---------------------------------------------------------

#include <iostream>

using namespace std;

//-----------------------------------------------
// Function: move
//
// Returns: void
//
// Purpose: move n disks from src peg to dst peg
// In Parameters: n, i, j
//-----------------------------------------------
void move(int n, int src, int dst)
{
  int k;    // The third peg

  if (n == 1)
  {
    cout << "Move a disk from peg " << src << " to peg " << dst << endl;
  }
  else
  {
    k = 6 - src - dst;
    move(n-1, src, k);
    move(1, src, dst);
    move(n-1, k, dst);
  }
}

//*********************************************************
//                  M A I N   D R I V E R
//*********************************************************


int main()
{
  int n;  // Number of disks

  cout << "Towers of Hanoi" << endl << endl;
  cout << "How many disks? ";
  cin >> n;
  cout << endl;
  move(n, 1, 3);
  cout << endl;

  return 0;
}