Data Structures26 min read

Dynamic Programming Intro

Understand dynamic programming as saving repeated work, with memoization and classic examples like Fibonacci.

David Miller
November 16, 2025
4.2k85

Dynamic Programming (DP) = solve once, reuse many times.

Fibonacci naive

def fib(n):
    if n <= 1:
        return n
    return fib(n-1) + fib(n-2)

This repeats work.

Memoized version

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

Graph

flowchart TD
  A[fib(5)] --> B[fib(4)]
  A --> C[fib(3)]
  B --> D[fib(3)]
  B --> E[fib(2)]

Remember

  • DP avoids recomputation
  • memo = cache
  • huge speedups
#Python#Advanced#DP