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. You open each box until you find the smallest one, then close them back in reverse order.
Function call stack: main() ↓ func() -> func() -> func() -> ... -> base case Each arrow shows a new function call waiting to finish.
