Recursion is a technique where a method calls itself directly or indirectly. It is useful for solving problems that involve repeating patterns or combinatorial algorithms. The document provides examples of calculating factorials, generating all binary vectors, and finding all paths in a labyrinth recursively. It discusses how to avoid harmful recursion that uses excessive memory and discusses when recursion is preferable to iteration, such as for problems that require exploring multiple continuations at each step. Exercises are provided to help practice implementing various recursive algorithms.