# Recursion

Recursion is a process in computer programming in which a function calls on itself as a subroutine. The concept is helpful when addressing a problem that can be solved by breaking it up into smaller copies of the same problem. Every time a recursive function runs, it tells itself to run again, not stopping until it meets a specified condition. Functions that incorporate recursion are called recursive functions.

A software developer building a recursive function needs to identify the base case. The base case is the part of the problem where the solution is known, so the problem is solved without more recursion. A recursive function iterates until it reaches the base case. At that point the recursion ends, and the program can move on to the next task.

Properly-used recursion is an efficient programming method since it minimizes the amount of code needed to complete a task. However, if the base case is not set (or is not reachable), the recursion will continue indefinitely. Endless recursion is called an infinite loop and will eventually cause a program to crash.