170. Function Memoization

Snippet 1: Basic Function Memoization Using a Dictionary

def fibonacci(n, memo={}):
    if n in memo:
        return memo[n]
    if n <= 2:
        return 1
    memo[n] = fibonacci(n - 1, memo) + fibonacci(n - 2, memo)
    return memo[n]

print(fibonacci(10))  # Output: 55

Snippet 2: Memoization with functools.lru_cache

from functools import lru_cache

@lru_cache(maxsize=None)
def factorial(n):
    return n * factorial(n - 1) if n > 1 else 1

print(factorial(10))  # Output: 3628800

Snippet 3: Custom Memoization Decorator


Snippet 4: Memoization for a Computationally Expensive Function


Snippet 5: Recursive Memoization for Combinatorics


Snippet 6: Memoization with Immutable Default Arguments


Snippet 7: Using functools.cache for Memoization (Python 3.9+)


Snippet 8: Memoization for String Processing


Snippet 9: Memoization for Pathfinding Problems


Snippet 10: Caching Results of an API Call Simulation


Last updated