La recursividad es una técnica de programación interesante y a veces útil, en donde se llama a la función desde el cuerpo de la propia función. Por supuesto, si eso es todo lo que hace, se estaría llamando a la función hasta que se acabase la memoria de ejecución, de modo que debe existir una manera de «escaparse» de la llamada recursiva. En el siguiente ejemplo, esta «escapada» se consigue simplemente indicando que la recursión sólo continuará hasta que cat exceda Z: [42]
//: C03:CatsInHats.cpp // Simple demonstration of recursion #include <iostream> using namespace std; void removeHat(char cat) { for(char c = 'A'; c < cat; c++) cout << " "; if(cat <= 'Z') { cout << "cat " << cat << endl; removeHat(cat + 1); // Recursive call } else cout << "VOOM!!!" << endl; } int main() { removeHat('A'); } ///:~
Listado 3.9. C03/CatsInHats.cpp
En removeHat(), se puede ver que mientras cat sea menor que Z, removeHat() se llamará a sí misma, efectuando así la recursividad. Cada vez que se llama removeHat(), su argumento es una unidad mayor que el cat actual de modo que el argumento continúa aumentando.
La recursividad a menudo se utiliza cuando se evalúa algún tipo de problema arbitrariamente complejo, ya que no se restringe la solución a ningún tamaño particular - la función puede simplemente efectuar la recursividad hasta que se haya alcanzado el final del problema.