Programa C++ que calcula el factorial de un número de forma recursiva.
#include <iostream>
using namespace std;
long double factorial(int);
int main()
{ int n;
cout << "Introduzca numero: ";
cin >> n;
cout << "factorial: " << factorial(n) << endl;
system("pause");
}
long double factorial(int n)
{
long double fact;
if (n==0)
return 1;
else
return n*factorial(n-1);
}
Más ejemplos de recursividad
en tu codigo no hay ninguna declaración o condición que haga que se detenga tu recursión, por ello "n" va a seguirse restando 1 hasta que se vuelva 0 y por lo tanto siempre se imprimirá 1 en la pantalla...
ResponderEliminarse puede resolver de una manera muy sencilla agregando un simple while:
// aprovecho que al parecer no estas usando la variable fact, aunque yo la declararia con long int o mejor unsigned long int...
else {
while (n >= 1){
fact = n*factorial (n-1);
return fact;
}
}
La condición que hace que se detenga la recursión es if(n==0) en ese caso se devuelve el valor 1. Si n no es cero se hace una llamada recursiva con el valor n-1. Si lo has ejecutado verás que funciona perfectamente.
Eliminarhola alguien me ayuda
ResponderEliminarelabore un programa que llame a una funcion denominado numdivisres para imprimir los divisores d e un numero entero y la suma de dichos divisores. sugerencia numdivisores(N)
ResponderEliminarEn realidad sobra hasta el else;
ResponderEliminarlong double factorial(int n)
{
if (n==0) return 1;
return n*factorial(n-1);
}
Con este código funciona perfectamente.