A function that calls itself within its own definition. Breaks down a problem into smaller, similar versions of itself. Continues calling itself until it reaches a base case, a condition where the ...