What is Recursion?
A programming technique where a function calls itself to solve a problem by breaking it into smaller subproblems.
Recursion solves problems by having a function call itself with modified parameters until reaching a base case. Classic examples include factorial calculation, Fibonacci numbers, tree traversal, and divide-and-conquer algorithms.
Every recursive solution needs a base case (stopping condition) to prevent infinite recursion. Tail recursion can be optimized by compilers. Some problems are naturally recursive (tree/graph traversal), while iterative solutions may be more efficient for others.