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:
[40]
//: 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 crece en una
unidad más 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.