Mental Model
Recursion lets a function call itself to solve smaller parts of a problem, which loops can't do easily when the problem has many layers or branches.
Analogy: Imagine a set of nested boxes where each box contains a smaller box inside. To open all boxes, you open one, then open the smaller one inside, and so on. Recursion is like opening each box by calling the same action again for the smaller box.
Boxes: OuterBox -> InnerBox -> SmallerBox -> null Function calls: main() -> recursiveCall() -> recursiveCall() -> base case
