Dev - C++ - Programa con recursividad

 
Vista:

Programa con recursividad

Publicado por pakoBDA (1 intervención) el 04/05/2010 04:17:52
BUENAS!!! queria ver si me podian ayudar con un programa en dev c++, se trata de sacar el factorial de un numero pero usando el metodo de recurisividad.
Aqui tengo el programa pero algo me falla y la verdad no se que es espero me puedan ayudar

GRACIAS!!! .

#include <stdio.h>
#include <conio.h>
int FACT(int);
int n;

main()

{

printf("Ingresa un numero: ");
scanf("%d", &n);
FACT(n);
printf("Factorial es: %d", FACT(n));
getche();

}

int FACT(n)
{
int s=1, z, i;
for(i=1; i<=n; i++)
{
z=s*i;
s=z;
}
return(n);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Programa con recursividad

Publicado por Capitan Kirk (48 intervenciones) el 05/05/2010 09:07:38
En tu función para el cálculo del factorial estás devolviendo n, es decir, el número para el que quieres calcular el factorial, y no el resultado del cálculo.

La función quer has puesto no es recursiva. Una función es recursiva cuando se llama a sí misma. En el caso del factorial (ejemplo típico de función recursiva), podemos definirlo como:

n! = n * (n-1)!

con lo que tendríamos, por ejemplo:

int FACT(int n)
{
if (n < 0)
return -1; // Indicar error si se pasa un numero negativo
if ( (n == 0) || (n == 1) )
return 1;
else
return n*FACT(n-1);
}

La comprobación de si n vale 0 es porque, por definición, 0!=1.

Cuando emplees funciones recursivas, asegúrate siempre de que hay una condición de salida que se pueda alcanzar, si no, entrarás en un bucle infinito ó un desbordamiento de la pila.

Para esta función, ten en cuenta una cosa: Con enteros de 32 bits, para valores de n mayores que 13 te dará resultados erróneos (por desbordamiento), con enteros de 64 bits podrás llegar a 20.

Otro detalle es que, dado que la función devuelve un valor, no necesitas efectuar la primera llamada, basta con la que tienes dentro de printf.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Programa con recursividad

Publicado por ing. omar! (1 intervención) el 08/05/2013 05:55:08
creo que hay error en el prototipo de la funcion! en los parametros solo tienes el tipo de dato y no la variable! y donde desarrollas la funcion no tienes tipo de dato solo la variable! y no veo la recursividad !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar