CODIGO:
#includeint factorial (int n) { int factor; if (n <= 1) factor = 1; else factor = n * factorial(n-1); return factor; } int main (void) { int x; printf("Calcular el factorial para -> "); scanf("%d", &x); printf("%d! = %d", x, factorial(x)); return 0; }
¿Cómo funciona el código?
Centremonos en el bloque
int factorial (int n) { int factor; if (n <= 1) factor = 1; else factor = n * factorial(n-1); return factor; }
Supongamos que calcularemos el factorial para 5, (5!), entonces tenemos que
Primera llamada recursiva, ahora tenemos n = 4
Segunda llamada recursiva, ahora tenemos n = 3
Tercera llamada recursiva, ahora tenemos n = 2
Cuarta y última llamada recursiva, ahora tenemos n = 1
Al llegar a esta parte sucede algo diferente :
int factorial (1) { int factor; 1 <= 1 (SE CUMPLE, ENTONCES) return 1;
A partir de aquí vamos para atrás, factorial (1) regresa el valor de 1
termina la función factorial (2)
termina la función factorial (3)
termina la función factorial (4)
Para asi dar conclusión a la función factorial (5), que regresa el valor de 120 , este valor se envía a la función main que imprime en pantalla el valor final 5! = 120
DESCARGA: factorial.c
SALUDOS!!!
Muy completo. Te pongo cuatro puntos para el lab.
ResponderEliminar