Mental Model
We have three ways to solve problems: recursion tries all options, greedy picks the best now, and dynamic programming remembers past results to avoid repeats.
Analogy: Imagine climbing stairs: recursion tries every path, greedy picks the easiest step each time, and dynamic programming remembers the best way to each step to save effort.
Recursion Tree:
root
/ \
... ...
Greedy Path:
start -> best choice -> best choice -> end
DP Table:
Index: 0 1 2 3 4
Value: _ _ _ _ _
Memo: x x x x x