📖 Scenario: Imagine you have three pegs and a stack of disks of different sizes on the first peg. Your goal is to move all the disks to the third peg, following the rules: only one disk can be moved at a time, and a larger disk cannot be placed on top of a smaller disk.
🎯 Goal: Build a program that solves the Tower of Hanoi problem for 3 disks and prints each move step-by-step.
📋 What You'll Learn
Create a variable to store the number of disks
Create a function to solve the Tower of Hanoi problem recursively
Print each move in the format: "Move disk X from peg Y to peg Z"
💡 Why This Matters
🌍 Real World
The Tower of Hanoi problem helps understand recursion and problem-solving strategies used in computer science and algorithms.
💼 Career
Understanding recursion and algorithmic thinking is essential for software development, coding interviews, and algorithm design.
Progress0 / 4 steps
1
Set up the number of disks
Create an integer variable called num_disks and set it to 3.
DSA C++
Hint
Use int num_disks = 3; to store the number of disks.
2
Create the Tower of Hanoi function
Write a recursive function called towerOfHanoi that takes four parameters: int n, char from_peg, char to_peg, and char aux_peg. The function should print the moves to solve the problem for n disks.
DSA C++
Hint
Use recursion to move n-1 disks to the auxiliary peg, then move the largest disk, then move the n-1 disks from auxiliary to target peg.
3
Call the Tower of Hanoi function
Call the towerOfHanoi function with num_disks, 'A' as the source peg, 'C' as the destination peg, and 'B' as the auxiliary peg.
DSA C++
Hint
Call the function inside main() with the correct arguments.
4
Print the solution moves
Run the program and print the moves generated by the towerOfHanoi function.
DSA C++
Hint
Run the program to see the moves printed in order.
Practice
(1/5)
1. What is the minimum number of moves required to solve the Tower of Hanoi problem with 3 disks?
easy
A. 6
B. 5
C. 9
D. 7
Solution
Step 1: Understand the formula for minimum moves
The minimum moves required for n disks is 2^n - 1.
Step 2: Calculate for 3 disks
For 3 disks, minimum moves = 2^3 - 1 = 8 - 1 = 7.
Final Answer:
7 -> Option D
Quick Check:
2^3 - 1 = 7 [OK]
Hint: Use formula 2^n - 1 for minimum moves [OK]
Common Mistakes:
Using n instead of 2^n - 1
Calculating 2*n - 1 instead of 2^n - 1
Confusing number of disks with moves
2. Which of the following is the correct base case condition in the Tower of Hanoi recursive function in C++?
easy
A. if (n == 1) move disk from source to destination;
B. if (n == 0) return;
C. if (n > 1) call recursive function;
D. if (n < 0) return;
Solution
Step 1: Identify the base case for recursion
The base case is when there is only 1 disk to move, so move it directly.
Step 2: Check the options
if (n == 1) move disk from source to destination; correctly states the base case: if (n == 1) move disk from source to destination.
Final Answer:
if (n == 1) move disk from source to destination; -> Option A
Quick Check:
Base case is n == 1 [OK]
Hint: Base case moves single disk directly [OK]
Common Mistakes:
Using n == 0 as base case
Not defining a base case
Using incorrect condition like n < 0
3. What will be the output sequence of moves for Tower of Hanoi with 2 disks from peg A to peg C using peg B as auxiliary?
medium
A. Move disk 2 from A to C
Move disk 1 from A to B
Move disk 2 from C to B
B. Move disk 1 from A to B
Move disk 2 from A to C
Move disk 1 from B to C
C. Move disk 1 from A to C
Move disk 2 from A to B
Move disk 1 from C to B
D. Move disk 2 from A to B
Move disk 1 from A to C
Move disk 2 from B to C
Solution
Step 1: Understand the recursive move sequence for 2 disks
Move top disk (1) from A to B, move bottom disk (2) from A to C, then move disk (1) from B to C.
Step 2: Match the sequence with options
Move disk 1 from A to B
Move disk 2 from A to C
Move disk 1 from B to C matches the correct sequence exactly.
Final Answer:
Move disk 1 from A to B
Move disk 2 from A to C
Move disk 1 from B to C -> Option B
Quick Check:
Correct move order for 2 disks [OK]
Hint: For 2 disks: move top to aux, bottom to dest, top to dest [OK]
Common Mistakes:
Swapping auxiliary and destination pegs
Moving larger disk before smaller disk
Incorrect move order
4. Identify the error in the following Tower of Hanoi recursive function snippet in C++:
void towerOfHanoi(int n, char source, char aux, char dest) {
if (n == 1) {
cout << "Move disk 1 from " << source << " to " << dest << endl;
return;
}
towerOfHanoi(n - 1, source, dest, aux);
cout << "Move disk " << n << " from " << source << " to " << dest << endl;
towerOfHanoi(n - 1, aux, source, dest);
}
medium
A. The order of auxiliary and destination pegs is swapped in recursive calls.
B. Base case condition should be n == 0 instead of n == 1.
C. The function does not print the moves correctly.
D. The function lacks a return statement after recursive calls.
Solution
Step 1: Analyze recursive calls parameters
The first recursive call should move n-1 disks from source to auxiliary using destination as auxiliary, so parameters should be (n-1, source, dest, aux).
Step 2: Identify incorrect parameter order
In the code, the first call uses (n-1, source, aux, dest) which swaps aux and dest incorrectly.
Final Answer:
The order of auxiliary and destination pegs is swapped in recursive calls. -> Option A
Quick Check:
Correct peg order is crucial in recursion [OK]
Hint: Check peg order in recursive calls carefully [OK]
Common Mistakes:
Swapping auxiliary and destination pegs
Wrong base case condition
Missing return statements
5. If the Tower of Hanoi problem is modified to have 4 pegs instead of 3, which of the following statements is true about the minimum number of moves required to move n disks?
hard
A. It remains the same as 3 pegs: 2^n - 1 moves.
B. It is always more than 2^n - 1 moves due to extra peg.
C. It is always less than 2^n - 1 moves but no exact formula is known.
D. It is exactly n^2 moves for any n.
Solution
Step 1: Understand the classic formula for 3 pegs
For 3 pegs, minimum moves = 2^n - 1.
Step 2: Consider 4 pegs case
With 4 pegs, the problem is more complex; fewer moves than 2^n - 1 are possible but no simple closed formula exists.
Final Answer:
It is always less than 2^n - 1 moves but no exact formula is known. -> Option C
Quick Check:
4 pegs reduce moves but formula unknown [OK]
Hint: More pegs reduce moves but no simple formula [OK]
Common Mistakes:
Assuming formula 2^n - 1 applies to 4 pegs
Thinking more pegs increase moves
Assuming quadratic moves for 4 pegs
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.