Mental Model
Recursion solves problems by breaking them into smaller parts, but it can repeat the same work many times. Dynamic Programming remembers past results to avoid repeating work.
Analogy: Imagine solving a big puzzle by solving small pieces. Recursion tries the same small piece many times, while Dynamic Programming writes down solved pieces so you don't redo them.
Recursion tree:
fib(4)
/ \
fib(3) fib(2)
/ \ / \
fib(2) fib(1) fib(1) fib(0)
/ \
fib(1) fib(0)
Dynamic Programming table:
Index: 0 1 2 3 4
Value: 0 1 1 2 3