Recursion is when a function solves a problem by calling itself on a smaller input. The base case is the stopping condition that does not recurse, so the calls eventually end.