Bird
Raised Fist0
DSA Javascriptprogramming~10 mins

Tower of Hanoi Problem in DSA Javascript - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to print the move from source to destination.

DSA Javascript
console.log('Move disk from ' + [1] + ' to ' + dest);
Drag options to blanks, or click blank then click option'
Adest
Bsource
Ctemp
Ddisk
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'dest' instead of 'source' for the starting peg.
Using an undefined variable like 'disk'.
2fill in blank
medium

Complete the recursive call to move n-1 disks from source to temp peg.

DSA Javascript
towerOfHanoi([1] - 1, source, temp, dest);
Drag options to blanks, or click blank then click option'
An
Bn - 1
C1
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Passing n instead of n - 1.
Passing 1 or 0 incorrectly.
3fill in blank
hard

Fix the error in the base case condition to stop recursion when no disks are left.

DSA Javascript
if ([1] === 0) return;
Drag options to blanks, or click blank then click option'
Adest
Bsource
Cn
Dtemp
Attempts:
3 left
💡 Hint
Common Mistakes
Checking source or dest instead of n.
Using wrong comparison operators.
4fill in blank
hard

Fill both blanks to correctly move the largest disk and then move n-1 disks from temp to dest.

DSA Javascript
console.log('Move disk from ' + [1] + ' to ' + [2]);
towerOfHanoi(n - 1, temp, dest, source);
Drag options to blanks, or click blank then click option'
Asource
Bdest
Ctemp
Dn
Attempts:
3 left
💡 Hint
Common Mistakes
Swapping source and temp.
Using n instead of peg names.
5fill in blank
hard

Fill all three blanks to complete the recursive calls and print statement for Tower of Hanoi.

DSA Javascript
towerOfHanoi([1] - 1, [2], [3], dest);
console.log('Move disk from ' + source + ' to ' + dest);
towerOfHanoi([1] - 1, temp, dest, [2]);
Drag options to blanks, or click blank then click option'
An
Bsource
Ctemp
Ddest
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up peg names in recursive calls.
Using dest instead of temp in the first call.

Practice

(1/5)
1. What is the minimum number of moves required to solve the Tower of Hanoi problem with 3 disks?
easy
A. 7
B. 6
C. 8
D. 9

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 A
  4. Quick Check:

    2^3 - 1 = 7 [OK]
Hint: Use formula 2^n - 1 for minimum moves [OK]
Common Mistakes:
  • Forgetting to subtract 1
  • Using n instead of 2^n - 1
  • Confusing number of disks with moves
2. Which of the following is the correct base case condition in a recursive Tower of Hanoi function in JavaScript?
easy
A. if (n < 0) return;
B. if (n === 1) moveDisk();
C. if (n > 1) return;
D. if (n === 0) return;

Solution

  1. Step 1: Identify base case for recursion

    The recursion stops when there are no disks to move, i.e., n === 0.
  2. Step 2: Check the options

    if (n === 0) return; correctly returns when n is 0, stopping recursion.
  3. Final Answer:

    if (n === 0) return; -> Option D
  4. Quick Check:

    Base case is n === 0 [OK]
Hint: Base case stops recursion at zero disks [OK]
Common Mistakes:
  • Using n === 1 as base case incorrectly
  • Not stopping recursion causing infinite calls
  • Using invalid conditions like n < 0
3. What will be the output sequence of moves for 2 disks in the Tower of Hanoi problem using this code snippet?
function towerOfHanoi(n, from, to, aux) {
  if (n === 0) return;
  towerOfHanoi(n - 1, from, aux, to);
  console.log(`Move disk ${n} from ${from} to ${to}`);
  towerOfHanoi(n - 1, aux, to, from);
}
towerOfHanoi(2, 'A', 'C', 'B');
medium
A. "Move disk 2 from A to C" "Move disk 1 from B to A" "Move disk 2 from C to B"
B. "Move disk 2 from A to B" "Move disk 1 from A to C" "Move disk 2 from B to C"
C. "Move disk 1 from A to B" "Move disk 2 from A to C" "Move disk 1 from B to C"
D. "Move disk 1 from A to C" "Move disk 2 from A to B" "Move disk 1 from C to B"

Solution

  1. Step 1: Trace recursive calls for n=2

    First move disk 1 from A to B, then disk 2 from A to C, then disk 1 from B to C.
  2. Step 2: Match output 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 exact sequence of moves printed by the code.
  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 C
  4. Quick Check:

    Correct move sequence for 2 disks = "Move disk 1 from A to B" "Move disk 2 from A to C" "Move disk 1 from B to C" [OK]
Hint: Follow recursion calls step-by-step [OK]
Common Mistakes:
  • Mixing source and auxiliary rods
  • Confusing disk numbers in moves
  • Ignoring order of recursive calls
4. Identify the error in this Tower of Hanoi recursive function and select the fix:
function towerOfHanoi(n, from, to, aux) {
  if (n === 1) {
    console.log(`Move disk 1 from ${from} to ${to}`);
    return;
  }
  towerOfHanoi(n - 1, from, to, aux);
  console.log(`Move disk ${n} from ${from} to ${to}`);
  towerOfHanoi(n - 1, aux, to, from);
}
medium
A. Swap 'to' and 'aux' in the first recursive call
B. Change base case to n === 0
C. Remove the second recursive call
D. Add an extra console.log before recursion

Solution

  1. Step 1: Analyze recursive calls

    The first recursive call should move n-1 disks from 'from' to 'aux' using 'to' as auxiliary, but here 'to' and 'aux' are swapped.
  2. Step 2: Correct the argument order

    Swapping 'to' and 'aux' in the first recursive call fixes the logic to move disks correctly.
  3. Final Answer:

    Swap 'to' and 'aux' in the first recursive call -> Option A
  4. Quick Check:

    Correct recursive call order fixes error [OK]
Hint: Check recursive call parameters carefully [OK]
Common Mistakes:
  • Mixing auxiliary and target rods
  • Incorrect base case causing infinite recursion
  • Removing necessary recursive calls
5. You want to solve the Tower of Hanoi problem for 4 disks but only want to print moves where disk 1 is moved. How would you modify this function?
function towerOfHanoi(n, from, to, aux) {
  if (n === 0) return;
  towerOfHanoi(n - 1, from, aux, to);
  console.log(`Move disk ${n} from ${from} to ${to}`);
  towerOfHanoi(n - 1, aux, to, from);
}
hard
A. Change base case to n === 1 and print only then
B. Add an if condition to print only when n === 1 inside the function
C. Remove recursive calls and print only disk 1 move
D. Print all moves but filter output outside the function

Solution

  1. Step 1: Understand the requirement

    We want to print moves only when disk 1 moves, but still perform all recursive calls to solve the problem.
  2. Step 2: Modify print statement with condition

    Add an if condition to print only when n === 1, so other moves are not printed but recursion continues.
  3. Final Answer:

    Add an if condition to print only when n === 1 inside the function -> Option B
  4. Quick Check:

    Conditional print inside recursion solves problem [OK]
Hint: Use if (n === 1) to print selectively [OK]
Common Mistakes:
  • Changing base case breaks recursion
  • Removing recursive calls stops solution
  • Filtering output outside misses recursion logic
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