Recursion in computer science is a method where the solution to a problem depends on solutions to smaller instances of the same problem (as opposed to iteration).**[1]** The approach can be applied to many types of problems, and recursion is one of the central ideas of computer science.**[2]**

"The power of recursion evidently lies in the possibility of defining an infinite set of objects by a finite statement. In the same manner, an infinite number of computations can be described by a finite recursive program, even if this program contains no explicit repetitions."**[3]**

Most computer programming languages support recursion by allowing a function to call itself within the program text. Some functional programming languages do not define any looping constructs but rely solely on recursion to repeatedly call code. Computability theory proves that these recursive-only languages are Turing complete; they are as computationally powerful as Turing complete imperative languages, meaning they can solve the same kinds of problems as imperative languages even without iterative control structures such as “while” and “for”.

(information from wikipedia)

### References

- Graham, Ronald; Donald Knuth; Oren Patashnik (1990). Concrete Mathematics. Chapter 1: Recurrent Problems.
- Epp, Susanna (1995). Discrete Mathematics with Applications (2nd ed.). p. 427.
- Wirth, Niklaus (1976). Algorithms + Data Structures = Programs. Prentice-Hall. p. 126.