Un procedimiento o función puede contener una llamada a otro procedimiento dentro de él. Incluso, la subrutina puede llamarse a sí misma. En este caso, a la computadora no le importa. También, como siempre, ejecuta consistentemente los comandos que conoce de arriba a abajo.
Si recuerdas las matemáticas, ahí podrás conocer el principio de inducción matemática. Es el siguiente:
algún enunciado es verdadero para todo n natural si
1. es válido para n = 1 y
2. de la validez del enunciado para cualquier n = k natural arbitrario se sigue que es verdadero para n = k+1.
En programación, esta técnica se llama recursión
La recursividad es una forma de definir un conjunto de objetos en términos del propio conjunto, basándose en casos base simples dados.
Recursivo también se denominará un procedimiento (función) que se llama a sí mismo directamente o a través de otros procedimientos y funciones
Un ejemplo de un procedimiento recursivo:
vacío Rec(int a)
{
si (a>0) Rec(a-1);
cout << a;
}
Esquemáticamente, el trabajo de recursividad se puede representar mediante un diagrama de flujo
Se ejecuta el procedimiento Rec() con el parámetro 3. Luego, dentro del procedimiento con el parámetro 3, se llama al procedimiento con el parámetro 2, y así sucesivamente, hasta que se llama al procedimiento con el parámetro 0. Cuando el procedimiento con el parámetro 0 se llama al parámetro 0, la llamada recursiva ya no ocurrirá y el procedimiento con el parámetro 0 imprimirá el número 0 y terminará. Luego, el control se transfiere nuevamente al procedimiento con el parámetro 1, también termina su trabajo imprimiendo el número 1, y así sucesivamente. antes del procedimiento con el parámetro 3.
Todos los procedimientos llamados se almacenan en la memoria hasta que completan su trabajo. El número de procedimientos concurrentes se llama profundidad de recurrencia
.