Tower of Hanoi

Watch the classic divide & conquer algorithm solve the ancient Tower of Hanoi puzzle with elegant recursive moves.

Divide & Conquer
O(2^n) Time
7 Optimal Moves

Controls

Minimum moves: 7

Move Information

Current Move:0/7
Phase: START
Recursion Depth: 0

Current Step

Step 1 of 0

Click Start to begin solving the Tower of Hanoi puzzle

Subproblem:
Call:

Tower of Hanoi Puzzle

A (Source)
B (Auxiliary)
C (Destination)

Rules

  • • Move all disks from Tower A to Tower C
  • • Only move one disk at a time
  • • Never place a larger disk on a smaller disk
  • • Use Tower B as auxiliary space

Python Implementation

def tower_of_hanoi(n, source, destination, auxiliary):
    if n == 1:
        # Base case: move single disk
        print(f"Move disk 1 from {source} to {destination}")
        return
    
    # Step 1: Move n-1 disks from source to auxiliary
    tower_of_hanoi(n-1, source, auxiliary, destination)
    
    # Step 2: Move the largest disk from source to destination  
    print(f"Move disk {n} from {source} to {destination}")
    
    # Step 3: Move n-1 disks from auxiliary to destination
    tower_of_hanoi(n-1, auxiliary, destination, source)

# Solve 3-disk Tower of Hanoi
tower_of_hanoi(3, 'A', 'C', 'B')
# Total moves: 7

JavaScript Implementation

function towerOfHanoi(n, source, destination, auxiliary) {
    if (n === 1) {
        console.log(`Move disk 1 from ${source} to ${destination}`);
        return;
    }
    
    // Move n-1 disks to auxiliary
    towerOfHanoi(n-1, source, auxiliary, destination);
    
    // Move largest disk to destination
    console.log(`Move disk ${n} from ${source} to ${destination}`);
    
    // Move n-1 disks to destination
    towerOfHanoi(n-1, auxiliary, destination, source);
}

// Solve 3-disk puzzle
towerOfHanoi(3, 'A', 'C', 'B'); // 7 moves

Algorithm Analysis

Complexity Analysis

  • Time Complexity: O(2^n)
  • Space Complexity: O(n) recursion depth
  • Moves Required: 2^n - 1 (optimal)
  • Growth: Doubles with each disk added
  • Legend: 64 disks would take 584 billion years!

Mathematical Properties

  • • Recurrence: T(n) = 2T(n-1) + 1
  • • Base case: T(1) = 1
  • • Solution: T(n) = 2^n - 1
  • • Perfect example of exponential growth

Real-World Applications

  • Backup Systems: Tape rotation strategies
  • Computer Science: Recursive algorithm teaching
  • Game Development: Puzzle game mechanics
  • Mathematics: Recursive sequence analysis
  • Problem Solving: Divide & conquer methodology

Historical Context

  • • Ancient puzzle from Indian temples
  • • Popularized by mathematician Édouard Lucas (1883)
  • • Classic introduction to recursion concepts
  • • Demonstrates elegant mathematical beauty