Recursion is a technique for solving complex problems by breaking them down into smaller subproblems. It involves defining a problem in terms of simpler instances of the same problem. Some key examples of using recursion to solve problems include computing factorials, calculating sums, generating Fibonacci numbers, and traversing directory structures. Recursion uses repetition with abstraction - defining functions that call themselves on smaller inputs until they arrive at a base case.