> For the complete documentation index, see [llms.txt](https://monica-granbois.gitbook.io/cs-theory-and-problems/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://monica-granbois.gitbook.io/cs-theory-and-problems/algorithms/recursion.md).

# Recursion

## Categories

Two general categories of recursion functions:

1. repeatedly execute a task
2. perform a calculation based on a subproblem

## Strategy&#x20;

Approach recursion with a top-down approach. Strategy (from [A Common-Sense Guide to Data Structures and Algorithms, Second Edition](https://pragprog.com/titles/jwdsal2/a-common-sense-guide-to-data-structures-and-algorithms-second-edition/) )

1. Imagine the function you're writing has already been implemented
2. Identify the subproblem of the problem
3. See what happens when you call the function on the subproblem and go from there
