Mental Model
Recursion is when a function calls itself to solve smaller parts of a problem until it reaches a simple case.
Analogy: Imagine a set of nested boxes where each box contains a smaller box inside it. You open each box until you find the smallest one, then close them back in reverse order.
main() -> func() -> func() -> func() -> base case stack frames: [func call 3] [func call 2] [func call 1] [main]
