Mental Model
Recursion solves problems by breaking them down, but it repeats work many times. Dynamic programming saves results to avoid repeating the same work.
Analogy: Imagine solving a big puzzle by solving small pieces. Recursion tries the same small piece many times, but dynamic programming remembers solved pieces so you don't redo them.
Recursion tree:
root
/ \
sub1 sub2
/ \ |
sub1a sub1b sub2a
Dynamic programming table:
Index: 0 1 2 3 4
Value: - - - - -
(We fill values once and reuse)