Mental Model
A function calls itself with a smaller number until it reaches 1, then multiplies all those numbers back up.
Analogy: Imagine stacking blocks from 1 up to n by first asking how many blocks are below, then adding the current one on top.
factorial(n) ↓ factorial(n-1) ↓ factorial(n-2) ↓ ... ↓ factorial(1) = 1 ↑ return multiply back up