Ejemplos de recursividad C++ Factorial de un número

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

5 comentarios:

  1. 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...
    se 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;
    }
    }

    ResponderEliminar
    Respuestas
    1. 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.

      Eliminar
  2. elabore 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)

    ResponderEliminar
  3. En realidad sobra hasta el else;

    long double factorial(int n)
    {
    if (n==0) return 1;
    return n*factorial(n-1);
    }

    Con este código funciona perfectamente.

    ResponderEliminar