Foro sobre Java SE > Java basico, problema con factoriales
Hola leoalvis,
Que tal haciendo el bucle asi:
for (int i = 1; i <= 5; i++) {
// j=i porque i contiene el numero del factorial que queremos calcular
for (int j = i; j >= 1; j--) {
fact = fact * j;
}
areaSalida.append(i + "\t" + fact + "\n");
// Reiniciamos el contador total
fact = 1;
}
Saludos
Hola UnoPorAhi:
Muchas gracias, me sirvió. No me imaginé la solución de esa forma. Seguiré practicando para desarrollar mas mi lógica.
Una manera muy simple, y segura, de obtener un factorial, sería esta:
public class Factorial {
public static void main(String[] args) {
System.out.println("factorial= " + getFactorial(20));
}
private static BigInteger getFactorial(final int n) {
BigInteger f = BigInteger.ONE;
for (int i = 1; i <= n; i++) {
f = f.multiply(BigInteger.valueOf(i));
}
return f;
}
}
Las soluciones que usan int internamente pueden dar resultados erróneos, debido a la limitación de máximo valor de los enteros.
Buenas noches a todos espero que estén bien:
Tengo un inconveniente con mi lógica al tratar de mostrar los factoriales del 1 al 5. Puedo listarlos, pero el acumulador no me muestra los resultados de manera correcta y no se "reinicia" para que me muestra el factorial de acuerdo al numero indicado. que me esta haciendo falta?. Anexo el código para que me puedan orientar. Muchas gracias.
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
public class Ejercicio58 {
public static void main(String args[]){
int fact=1;
JTextArea areaSalida = new JTextArea();
areaSalida.setText("Numero\tFactorial\n");
for(int i=1;i<=5;i++){
for(int j=5;j>=1;j--)
fact=fact*j;
areaSalida.append(i+"\t"+fact+"\n");
}
JOptionPane.showMessageDialog(null, areaSalida,"Resultados",JOptionPane.INFORMATION_ME SSAGE);
}
}