Java - mostrar el factorial de cada número (desde 1 hasta N)

 
Vista:

mostrar el factorial de cada número (desde 1 hasta N)

Publicado por carlos (2 intervenciones) el 17/12/2019 12:41:48
Buenos días chicos. Me encuentro con este ejercicio y tnego un problema, si pudieseis echarme una mano, os lo agradecería. :"Ejercicio 3 Leer por teclado un número entero N no negativo, menor o igual que 10, y mostrar el factorial de cada número (desde 1 hasta N) y la SUMA de las factoriales de todos los números."
Yo se calcular el factorial de un numero, pero como hago el resto?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// metodo factorial
 
public static double facto(double num) {
 
    //caso particular final
    if(num==1) {
        return  1;
    }
    else {
 
        return num*facto(num-1);
 
    }
}
 
public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc = new Scanner(System.in);
    double n = 0;
 
    System.out.println("introduce numero: ");
    n = sc.nextDouble();
 
    System.out.println("el factorial de " + n + " es: " + facto(n));

Con esto calculo el factorial, pero, como calcular el resto de lo que pide?
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
sin imagen de perfil
Val: 186
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

mostrar el factorial de cada número (desde 1 hasta N)

Publicado por Juan (70 intervenciones) el 17/12/2019 13:14:23
Buenas Carlos, intenta poner el codigo con la función insertar código para que sea más fácil la lectura. te dejo aquí un ejemplo de como lo haría yo, suponiendo que entiendi el enunciado jeje.

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
34
35
36
37
38
39
40
public static void main(String args[]) {
 
    double n = 0;
 
    System.out.println("introduce numero: ");
    n = validar();
 
    System.out.println("la suma de todos los factoriales del 1 al "+n+" es: "+sumaFacto(n));
}
 
public static double sumaFacto(double numero){
    double suma=0;
    for (double i=1; i<=numero; i++){
        double facto=facto(i);
        System.out.println("el factorial de " + i + " es: " + facto);
        suma=suma+facto;
    }
    return suma;
}
 
public static double facto(double num) {
    if(num==1)
        return 1;
    else
        return num*facto(num-1);
}
 
public static double  validar(){
    double n=-1;
    Scanner sc = new Scanner(System.in);
    do{
        try{
            n = Double.parseDouble(sc.nextLine());
        }catch(Exception e){
            n=-1;
            //Esto es solo por si introduce una letra
        }
    }while(n<0||n>10);
    return n;
}
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
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

mostrar el factorial de cada número (desde 1 hasta N)

Publicado por Billy Joel (875 intervenciones) el 17/12/2019 20:15:01
1
2
3
4
5
6
7
8
9
10
11
12
13
/**
 * Devuelve el factorial de un número
 *
 * @param n número del que se quiere obtener el factorial
 * @return
 */
private static int getFactorial(int n) {
    int f = 1;
    for (int i = n; i >= 1; i--) {
        f *= i;
    }
    return f;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

mostrar el factorial de cada número (desde 1 hasta N)

Publicado por Rodrigo (623 intervenciones) el 18/12/2019 07:40:36
Las soluciones mostradas parecen mas complicadas que lo necesario.
Se puede hacer el calculo del factorial y la suma en la misma iteracion, sin tener que volver a multiplicar todo otra vez para
el siguiente factorial, por ejemplo asi:

1
2
3
4
5
6
7
8
9
10
11
// poner esto dentro del main y leer n antes
int suma = 0;
int factorial = 1;
 
for(int i = 1; i <= n; i++ ) {
    factorial *= i;
    System.out.printf("%d! = %d%n", i, factorial);
    suma += factorial;
}
 
System.out.printf("Suma = %d%n", suma);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar