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!!!

1 comentario: