Una función recursiva es aquella que simula un ciclo o iteraciones llamándose así misma, un ejemplo clásico es el programa para obtener el factorial mediante una función. Aquí el ejemplo en lenguaje C
#include <stdio.h> long factorial( long numero ); int main() { int i; for ( i = 0; i <= 10; i++ ) { printf( "%2d! = %ldn", i, factorial( i ) ); } return 0; } long factorial( long numero ) { /* caso base */ if ( numero <= 1 ) { return 1; } else { /* paso recursivo */ return ( numero * factorial( numero - 1 ) ); } }
Vamos a hacer una ejecución
Suponiendo que se manda a llamar factorial(3). En ese momento hace el siguiente proceso.
long factorial( long numero )
{
//numero vale 3if ( 5 <= 1 ) { //falso
return 1;
}
else { //manda un 2 a la función factorialreturn ( numero * factorial( 3- 1 ) );
}
}
Dentro de la segunda llamada se repite el proceso, ahora con 2
long factorial( long numero )
{
//numero vale 2if ( 2 <= 1 ) { //falseoreturn 1;
}
else { //manda un 1 a la función factorialreturn ( numero * factorial( 2- 1 ) );
}
}
Ahora que se llama factorial(1), está listo para completar el algoritmo.
long factorial( long numero )
{
/numero vale 1if ( 2 <= 1 ) { //verdadero
return 1;
}
else { //no se ejecutareturn ( numero * factorial( 2- 1 ) );
}
}
Al terminar se hace un recorrido hacia atrás de tal forma que que se ejecuta lo siguiente
En la llamada 3
Se retorna el número 1 directamente
En la llamada 2
numero * factorial( 2- 1 ) );
El valor 1 obtenido en la llamada 3 ahora se utiliza y tenemos.
numero*1 = 2*1=2
En la llamada 1
numero * factorial( 3-1 ) );
El valor 2 que se obtuvo como resultado ahora es invocado en la primera llamada
numero*2=3*2=6
El resultado es 6.



0 comentarios:
Publicar un comentario