DSAverse
Initializing Sorting Algorithms...
Sorting Algorithm
Binary Tree
Graph Traversal
Preparing interactive visualizations for optimal learning experience...
Initializing Sorting Algorithms...
Preparing interactive visualizations for optimal learning experience...
Initializing Sorting Algorithms...
Preparing interactive visualizations for optimal learning experience...
See the explosive growth of naive recursion vs the efficiency of memoization in computing Fibonacci numbers.
Click Start to begin the Fibonacci visualization
def fibonacci_naive(n):
# Base case
if n <= 1:
return n
# Recursive case - exponential time!
return fibonacci_naive(n-1) + fibonacci_naive(n-2)
def fibonacci_memo(n, memo={}):
# Check cache first
if n in memo:
return memo[n]
# Base case
if n <= 1:
memo[n] = n
return n
# Compute and cache result
memo[n] = fibonacci_memo(n-1, memo) + fibonacci_memo(n-2, memo)
return memo[n]
# Example: fib(5) = 5
# Naive calls: 15 vs Memoized calls: 6function fibonacciNaive(n) {
if (n <= 1) return n;
return fibonacciNaive(n-1) + fibonacciNaive(n-2);
}
function fibonacciMemo(n, memo = {}) {
if (n in memo) return memo[n];
if (n <= 1) {
memo[n] = n;
return n;
}
memo[n] = fibonacciMemo(n-1, memo) + fibonacciMemo(n-2, memo);
return memo[n];
}
// Example: fib(5) = 5