Towers of Hanoi using recursion in C++
Posted by Samath
Last Updated: January 04, 2017

The Tower of Hanoi is a mathematical game or puzzle. It consists of three rods, and a number of disks of different sizes which can slide onto any rod. The puzzle starts with the disks in a neat stack in ascending order of size on one rod, the smallest at the top, thus making a conical shape.

The objective of the puzzle is to move the entire stack to another rod, obeying the following simple rules:

1. Only one disk can be moved at a time.

2. Each move consists of taking the upper disk from one of the stacks and placing it on top of another stack i.e. a disk can only be moved if it is the uppermost disk on a stack.

3. No disk may be placed on top of a smaller disk.

Code:

#include <iostream>
using namespace std;

void hanoi(int diskSize, int source, int dest, int spare)
{
  if(diskSize == 0)
	{
		std::cout << "Move disk " << diskSize << " from peg " << source << " to peg " << dest << endl;
	}
	else
	{
		hanoi(diskSize - 1, source, spare, dest);
		cout << "Move disk "  << diskSize << " from peg " << source << " to peg " << dest << endl;
		hanoi(diskSize - 1, spare, dest, source);
	}
}

int main()
{
  hanoi(2, 0, 1, 2);
  return 0;
}