La recursividad es el mecanismo mediante el cual un módulo se invoca a si mismo. Hay operaciones que son recursivas por naturaleza, como el factorial:
5! = 5 * 4 * 3 * 2 * 1
4! = 4 * 3 * 2 * 1
3! = 3 * 2 * 1
2! = 2 * 1
1! = 1
Luego yo puedo decir que:
5! = 4! * 5
4! = 3! * 4
3! = 2! * 3
2! = 1! * 2
1! = 1
Entonces bajo ese criterio yo puedo expresar esto como la función:
factorial(5) = factorial(4) * 5 y así sucesivamente.
Observe que la función tiene dos comportamientos:
factorial(n) = factorial(n-1) * n
Cuando n<>1
y
factorial(n) = 1
Cuando n = 1
Luego la función sería:
factorial(int n)
{
if(n>1)
return(n*factorial(n-1));
else
if(n==1)
return(1);
}
Vea que la función factorial es llamada de nuevo desde la misma función factorial. Eso es la recursividad.
Sinembargo, le recomiendo usar la recursividad solo en los casos que no pueda usar operaciones cíclicas, pues el cambio de contexto consume mucho recurso.
gmantil