After covering the foundational building blocks in Session 1, the next step is one of the most important problem-solving techniques in all of programming: recursion.

And once recursion feels comfortable, it unlocks a powerful search strategy called backtracking.

These two concepts appear everywhere in competitive programming — Fibonacci, binary search, tree traversal, merge sort, dynamic programming, N-Queens, and more. They deserve their own spotlight. 🌟

What Is Recursion?

A function is recursive if it calls itself. Instead of solving a problem in one go, a recursive function breaks it into a smaller version of the same problem, solves that, and repeats — until the problem becomes simple enough to answer directly.