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 box, then open the smaller box inside it, and so on. Loops can only open boxes one after another in a line, but recursion can open boxes inside boxes naturally.
Boxes: OuterBox -> InnerBox -> SmallerBox -> null Function calls: main() -> recursiveCall() -> recursiveCall() -> base case
