Bird
Raised Fist0
DSA C++programming~5 mins

Tower of Hanoi Problem in DSA C++ - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Tower of Hanoi Problem
O(2^n)
Understanding Time Complexity

We want to understand how the time needed to solve the Tower of Hanoi grows as we add more disks.

How does the number of moves change when the number of disks increases?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


void towerOfHanoi(int n, char from_rod, char to_rod, char aux_rod) {
    if (n == 1) {
        // Move disk 1 from from_rod to to_rod
        return;
    }
    towerOfHanoi(n - 1, from_rod, aux_rod, to_rod);
    // Move disk n from from_rod to to_rod
    towerOfHanoi(n - 1, aux_rod, to_rod, from_rod);
}
    

This code moves n disks from one rod to another using recursion and an auxiliary rod.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Recursive calls that move smaller stacks of disks.
  • How many times: Each call makes two recursive calls with n-1 disks, plus one move.
How Execution Grows With Input

Each time we add a disk, the number of moves roughly doubles and adds one more move.

Input Size (n)Approx. Operations (Moves)
11
23
37
415
531

Pattern observation: The moves grow exponentially, doubling each time we add a disk.

Final Time Complexity

Time Complexity: O(2^n)

This means the time needed doubles with each extra disk, growing very fast as n increases.

Common Mistake

[X] Wrong: "The time grows linearly with the number of disks because we just move each disk once."

[OK] Correct: Actually, disks are moved many times in smaller groups, so the total moves double with each added disk, not just increase by one.

Interview Connect

Understanding this problem helps you think about recursion and exponential growth, which are common in many coding challenges.

Self-Check

"What if we changed the problem to move disks iteratively without recursion? How would the time complexity change?"

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

  1. Step 1: Understand the formula for minimum moves

    The minimum moves required for n disks is 2^n - 1.
  2. Step 2: Calculate for 3 disks

    For 3 disks, minimum moves = 2^3 - 1 = 8 - 1 = 7.
  3. Final Answer:

    7 -> Option D
  4. 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

  1. Step 1: Identify the base case for recursion

    The base case is when there is only 1 disk to move, so move it directly.
  2. 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.
  3. Final Answer:

    if (n == 1) move disk from source to destination; -> Option A
  4. 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

  1. 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.
  2. 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.
  3. 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
  4. 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

  1. 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).
  2. Step 2: Identify incorrect parameter order

    In the code, the first call uses (n-1, source, aux, dest) which swaps aux and dest incorrectly.
  3. Final Answer:

    The order of auxiliary and destination pegs is swapped in recursive calls. -> Option A
  4. 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

  1. Step 1: Understand the classic formula for 3 pegs

    For 3 pegs, minimum moves = 2^n - 1.
  2. 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.
  3. Final Answer:

    It is always less than 2^n - 1 moves but no exact formula is known. -> Option C
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard