Recursion is a programming technique where a function calls itself to solve a problem by
breaking it down into smaller subproblems. Every recursive function has:
1. Base case – the condition that stops the recursion.
2. Recursive case – the part where the function calls itself with a simpler or smaller input.
It's often used in problems involving tree traversal, factorial calculation, or divide-and-conquer
algorithms like merge sort.