Mental Model
Recursion is when a function calls itself to solve smaller parts of a problem until it reaches a simple case it can answer directly.
Analogy: Imagine a set of Russian nesting dolls where each doll holds a smaller one inside. To open the biggest doll, you first open the smaller one inside, and so on until you reach the smallest doll that can be opened easily.
Function call stack: main() ↑ recursiveFunction(n) ↑ recursiveFunction(n-1) ↑ ... ↑ recursiveFunction(base case) ↑ returns back up
