CODIGO:
#include
int 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!!!
No hay comentarios:
Publicar un comentario