In this program I will give you information about tower of hanoi c++ program with the help of explanation. In the given below code we are using recursion.
Code For Tower of Hanoi C++ Program
#include <iostream>
using namespace std;
// Function prototype
void towerOfHanoi(int num_disks, char source_rod, char destination_rod, char auxiliary_rod);
int main()
{
int num_disks; // number of disks
std::cout << "Enter the number of disks: ";
std::cin >> num_disks;
// solve the puzzle
towerOfHanoi(num_disks, 'A', 'C', 'B');
return 0;
}
// Recursive function to solve Tower of Hanoi puzzle
void towerOfHanoi(int num_disks, char source_rod, char destination_rod, char auxiliary_rod)
{
if (num_disks == 1)
{
std::cout << "Move disk 1 from rod " << source_rod << " to rod " << destination_rod << std::endl;
return;
}
towerOfHanoi(num_disks - 1, source_rod, auxiliary_rod, destination_rod);
std::cout << "Move disk " << num_disks << " from rod " << source_rod << " to rod " << destination_rod << std::endl;
towerOfHanoi(num_disks - 1, auxiliary_rod, destination_rod, source_rod);
}
Explanation:
The Tower of Hanoi is a puzzle that involves three rods and a set of disks of different sizes. The puzzle starts with the disks in a stack in ascending order of size on one rod, with the smallest at the top. The goal is to move the entire stack to another rod, following these rules:
- Only one disk can be moved at a time.
- A disk can only be moved if it is the topmost disk on a stack.
- A larger disk cannot be placed on top of a smaller disk.
This program uses a recursive function, towerOfHanoi()
, to solve the puzzle. The function has four parameters:
num_disks
: the number of diskssource_rod
: the rod where the disks are initially locateddestination_rod
: the rod where the disks should be moved toauxiliary_rod
: an additional rod that can be used as temporary storage
The base case of the recursion occurs when num_disks
is equal to 1. In this case, we simply print the step to move the disk from the source rod to the destination rod.
Otherwise, we move num_disks - 1
disks from the source rod to the auxiliary rod, using the destination rod as temporary storage. Then, we move the num_disks
th disk from the source rod to the destination rod. Finally, we move the num_disks - 1
disks from the auxiliary rod to the destination rod, using the source rod as temporary storage.
I hope this helps! Let me know if you have any questions.
Also Read: C++ program for multilevel inheritance