This document discusses recursion, which is a fundamental concept in computer science and mathematics where a function calls itself. It provides examples of common recursive definitions like factorials and Fibonacci numbers. It explains how recursive programs work by dividing the problem into smaller subproblems until a base case is reached. The document also introduces the "divide and conquer" paradigm where most recursive programs make two recursive calls on halves of the input to solve problems more efficiently than iterative approaches.