Mental Model
A function calls itself with a smaller number until it reaches 1, then builds the answer back up.
Analogy: Imagine stacking blocks: to find the total height, you ask the block below for its height, and keep asking down until the bottom block, then add up all heights on the way back.
factorial(3) ↓ factorial(2) ↓ factorial(1) ↓ return 1 ↑ return 2 * 1 = 2 ↑ return 3 * 2 = 6
