Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: JDiaz98 en 11 de Agosto 2018, 02:40
-
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.
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
-
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);
}
-
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:
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:
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.
-
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);
}
-
Cool! ;)