Mental Model
Recursion repeats work by solving the same problem many times. Dynamic programming saves answers to avoid repeating work.
Analogy: Imagine you are solving a big puzzle by breaking it into smaller pieces. If you forget which pieces you already solved, you waste time solving them again. Dynamic programming is like writing down solved pieces so you never redo them.
Recursion tree with repeated nodes:
[5]
/ \
[4] [3]
/ \ / \
[3] [2] [2] [1]
↑ ↑ ↑
Repeated calls to [3] and [2]