Autor Tema: Java factorial variable utilizada en el ciclo for no devuelve su nuevo valor.  (Leído 4512 veces)

JDiaz98

  • Sin experiencia
  • *
  • Mensajes: 4
    • Ver Perfil
Buenas noches chicos, estoy tratando de hacer un algoritmo que ingresado un numero por teclado me calcule una sucesión. Estuve haciendo unas pruebas de escritorio y me sale el resultado correcto, pero en el código no. Verán, me devuelve el valor de la variable como la inicialicé antes de usarla en el ciclo for. Gracias.
 
Código: [Seleccionar]
        Scanner entrada = new Scanner(System.in);
        System.out.println("Ingrese un numero entero para calcular su factorial!");
        int num = entrada.nextInt();
        int factorial = 0;
        for(int i =num; i !=0; i--){
            factorial =+ (num*1);     
        }
        System.out.println("Fatorial del numero "+num+" es: "+factorial); 
    }  // al final me sale 0, es decir esta devolviendo el valor inicial y no el nuevo que
        //obtengo en el ciclo for
« Última modificación: 23 de Marzo 2020, 20:19 por Alex Rodríguez »

JDiaz98

  • Sin experiencia
  • *
  • Mensajes: 4
    • Ver Perfil
Re:Variable utilizada en el ciclo for no devuelve su nuevo valor.
« Respuesta #1 en: 11 de Agosto 2018, 03:01 »
Ya corregi :D

 public static void main(String[] args) {
       
        Scanner entrada = new Scanner(System.in);
        System.out.println("Ingrese un numero entero para calcular su factorial!");
        int num = entrada.nextInt();
        int factorial = 0;
       
        for(int i=num; i!=0; i--){
           factorial = factorial + (i*1);
        }
        System.out.println("Fatorial del numero "+num+" es: "+factorial);
    }

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:Variable utilizada en el ciclo for no devuelve su nuevo valor.
« Respuesta #2 en: 12 de Agosto 2018, 00:45 »
Exacto.
En el bucle for, la variable num no cambia nunca de valor, es la variable i la que se va modificando en cada iteración y por tanto la que usaremos para el cálculo del factorial.
Dos correciones.
la primera, sin importancia, en esta línea, no es necesario multiplicar la i * 1:
Citar
factorial = factorial + (i*1);

Si lo piensas, multiplicar por 1 nunca sirve para nada.
5 multiplicado por 1, sigue siendo 5.
15 multiplicado por 1, sigue siendo 15.
543 multiplicado por 1, sigue siendo 543.
7236476274627 multiplicado por 1, sigue siendo 7236476274627

En conclusión,
i multiplicado por 1, sigue siendo i

Así que con esto es suficiente:
Citar
factorial = factorial + i;

LA segunda, importante:
Ahora mismo no estás consiguiendo obtener el factorial

Mira, por ejemplo, el factorial de 5, sería:
5 * 4 * 3 * 2 * 1 = 120

Sin embargo, con tu código obtenemos como resultado 15
Porque estás haciendo:
5 + 4 + 3 + 2 + 1 = 15

Revísalo, casi lo tienes, pero no estás haciendo la operacion matemática correcta.
Y enseguida te darás cuenta de que no te va a bastar cambiar la suma por una mutiplicación.
Hay que hacer más modificaciones en el código. La solución tiene la estructura que propones, pero aún faltan un par de detalles.
« Última modificación: 12 de Agosto 2018, 00:59 por Kabuto »
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

JDiaz98

  • Sin experiencia
  • *
  • Mensajes: 4
    • Ver Perfil
Re:Variable utilizada en el ciclo for no devuelve su nuevo valor.
« Respuesta #3 en: 12 de Agosto 2018, 15:01 »
Gracias por tus sugerencias, pude solucionarlo  :D
public static void main(String[] args) {
       
        Scanner entrada = new Scanner(System.in);
        System.out.println("Ingrese un numero entero para calcular su factorial!");
        int num = entrada.nextInt();
        int factorial = 1;
        for(int i = 1; i <num; i++){
           factorial = factorial * (i+1);
        }
        System.out.println("El numero factorial del numero: "+num+" es: "+factorial);
    }

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:Variable utilizada en el ciclo for no devuelve su nuevo valor.
« Respuesta #4 en: 12 de Agosto 2018, 17:20 »
Cool!  ;)
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".