Dev - C++ - Recursividad factorial hasta 4 C++

   
Vista:

Recursividad factorial hasta 4 C++

Publicado por merlindvd (17 intervenciones) el 14/12/2016 17:43:58
Hola a todos,

Quisiera modificar el siguiente código para que calcule el factorial pero solo hasta el número entero 4.
Con la siguiente condición:
Antes de llamar a la función el número que se pida en pantalla debe estar entre 4 y 20. Además el factorial debe acabar al llegar al valor 4.

Por ejemplo:

El factorial de 5:
5 * 4 = 20

De 6:
6 * 5 * 4 = 120

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int factorial(int num);
 
int main()
{
int num;
cout << "Introduzca un número: ";
cin >> num;
cout << "Su factorial es: " << factorial(num) << endl;
 
return 0;
}
 
int factorial( int num )
{
 
if (num <= 1)
 return 1;
 else
 return num * factorial(num -1);
}



Gracias
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

Recursividad factorial hasta 4 C++

Publicado por agustin (496 intervenciones) el 14/12/2016 18:53:56
Supongo que será algo asi:
1
2
3
4
5
6
7
8
int factorial( int num )
{
 
if (num < 4)
 return 1;
 else
 return num * factorial(num -1);
}
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

Recursividad factorial hasta 4 C++

Publicado por merlindvd (17 intervenciones) el 14/12/2016 19:13:13
Hola, gracias por la respuesta.
Acabo de probar y no compila, algo falla en el código. En el caso de que funcionara, se podría añadir una condición que cumpla que el numero debe estar entre 4 y 20. Algo como for (numero=4; numero<=20).

Gracias.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int factorial(int num);
 
int main()
{
int num;
cout << "Introduzca un número: ";
cin >> num;
cout << "Su factorial es: " << factorial(num) << endl;
 
return 0;
}
int factorial(int num)
{
if (num < 4)
 return 1;
 else
 return num * factorial(num -1);
}
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

Recursividad factorial hasta 4 C++

Publicado por agustin (496 intervenciones) el 14/12/2016 23:01:04
a mi me compila y funciona correctamente. De todos modos ya te lo pongo con algunas mejoras y con lo que pides:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <stdlib.h>
 
#define LIMITE_INFERIOR 4
#define LIMITE_SUPERIOR 20
 
using namespace std;
 
unsigned long factorial(unsigned long num);
 
int main()
{
    unsigned long num;
    do{
        cout << "Introduzca un numero (entre " << LIMITE_INFERIOR << " y " << LIMITE_SUPERIOR << "): ";
        cin >> num;
        if(num < LIMITE_INFERIOR || num > LIMITE_SUPERIOR)
            cout << "El numero introducido esta fuera del rango permitido." << endl
                 << "Vuelve a intentarlo." << endl;
    }while(num < LIMITE_INFERIOR || num > LIMITE_SUPERIOR);
    cout << "Su factorial es: " << factorial(num) << endl;
 
    system("PAUSE");
    return 0;
}
 
unsigned long factorial(unsigned long num)
{
    if (num < 4)
        return 1;
    else
        return num * factorial(num -1);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Recursividad factorial hasta 4 C++

Publicado por merlindvd (17 intervenciones) el 15/12/2016 08:27:10
Ahora si que compila,
muchas gracias por el aporte.
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