The document discusses recursion in computer programming. It defines recursion as a function that calls itself or is called by another function. It categorizes different types of recursion such as direct, indirect, linear, tree, and tail recursion. It explains how recursive functions work by using a stack to store information from each function call. Examples of recursively-defined problems like factorials and Fibonacci numbers are provided. Guidelines for writing recursive functions and solving problems recursively are also outlined.