Recursion is a technique for solving problems by solving smaller instances of the same problem. It involves defining a base case and constructing new elements by calling the function on smaller inputs. For example, calculating factorials recursively involves defining 0! as 1, and calculating other values as n * factorial(n-1). Recursive algorithms must eventually reach a base case to avoid infinite recursion. While recursion can simplify problems, iteration is often more efficient in terms of time and space. Examples of problems that can be solved recursively include binary search, reversing an array, counting zeros, checking palindromes, and drawing triangles.