
//*****************************************************************************
////  Course:             COMS 2203 Foundations of Computer Programming II Sect. 2
////  Semester:           Fall 2004
////  Assignment Number:  Lab #3                             
////  Author Name:        DarC KonQuesT                        
////  Date Written:       September 17, 2004
////                                                         
////  Description of Program:                              
////  Calculate the number of moves required for a variable number of discs in 
////  the "tower of Hanoi" problem.                             
////*****************************************************************************
#include <iostream>

using namespace std;

void moveDisks(int count, int needle1, int needle3, int needle2, int& move_counter)
{
  if(count > 0)
  {
    moveDisks(count - 1, needle1, needle2, needle3, move_counter);
    move_counter++;
    cout << "Move disk " << count << " from " << needle1 << " to " << needle3 << "." << endl;
    moveDisks(count - 1, needle2, needle3, needle1, move_counter);
  }
}

int main()
{
int disks, move_counter;

move_counter = 0;
cout << endl << "Enter the number of disks: ";
cin >> disks;
cout << endl;

moveDisks(disks, 1, 3, 2, move_counter);
cout << endl << endl << "The number of required moves is: " << move_counter << endl;
}

