domingo, 5 de septiembre de 2010

RECURSION: Factorial.c

Laboratorio de Lenguajes de Programación - Semana 4

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