Mental Model
Recursion solves problems by breaking them into smaller parts, but it repeats work many times. Dynamic Programming saves these results to avoid repeating, making it faster.
Analogy: Imagine solving a big puzzle by solving small pieces. Recursion solves the same small piece many times, like redoing a puzzle piece again and again. Dynamic Programming remembers solved pieces, so you never redo the same piece twice.
Recursion tree:
[root]
/ \
[sub] [sub]
/ \ / \
[sub] [sub][sub] [sub]
Dynamic Programming table:
Index: 0 1 2 3 4
Value: x x x x x
Memo: x x x x x (saved results)