This document discusses recursion, providing examples of recursive functions over numbers and lists. It explains recursion as solving a problem by defining a function in terms of itself, with each call reducing the problem size until a base case is reached. The steps to define a recursive function are given as determining the base case(s) and extending the solution of smaller cases. Examples of recursively defined functions include factorial, Fibonacci numbers, and list operations like member and append. Recursion allows for elegant solutions to problems involving trees, graphs, and other inherently recursive structures.