Recursion is a programming technique where a function calls itself to solve a problem by breaking it down into smaller, similar subproblems.