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 choosing snacks: recursion tries every snack combination, greedy grabs the tastiest snack first, and dynamic programming remembers which snack combos worked best before to save time.
Recursion Tree:
root
/ \
opt1 opt2
/ \ |
... ... ...
Greedy Path:
start -> best choice -> next best -> end
DP Table:
+-----+-----+-----+
| 0 | 1 | 2 |
+-----+-----+-----+
| val | val | val |
+-----+-----+-----+