Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Problema ciclo for

Estas en el tema de Problema ciclo for en el foro de Java en Foros del Web. Buen día, Tengo un programa que debe sacar el factorial a los números de 0 a 5, el problema viene cuando va a sacar el ...
  #1 (permalink)  
Antiguo 16/02/2015, 14:35
 
Fecha de Ingreso: septiembre-2014
Ubicación: Bogotá
Mensajes: 3
Antigüedad: 9 años, 8 meses
Puntos: 0
Pregunta Problema ciclo for

Buen día,

Tengo un programa que debe sacar el factorial a los números de 0 a 5, el problema viene cuando va a sacar el factorial a 3 y los siguientes, de 0 a 2 realiza correctamente. Este es el código del programa

public class SumaFact {

public static void main(String[] args) {
int n = 0;
int fn = 1;
for (int i = 0; i <= 5; i++) {
for (int j = 1; j <= n; j++) {
fn = fn * j;
}
JOptionPane.showMessageDialog(null, n+"! = "+fn);
n++;
}
}
}

Quisiera saber por qué no funciona correctamente, he probado de todo y nada ha resultado.


Gracias.
  #2 (permalink)  
Antiguo 17/02/2015, 02:49
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Problema ciclo for

El problema es que has mezclado dos formas de calcular el factorial.

En principio te has decantado por la que sería 3!=3*2*1

sin embargo cuando terminas el segundo for no reinicias el valor de fn, así que estás haciendo

3!=3*2*2!

Si cambias tú código podrías hacer que

2!=2*1!
3!=3*2!
4!=4*3!

sería una forma más eficiente para tu caso.


Código Java:
Ver original
  1. int n = 0;
  2.         int fn = 1;
  3.         for (int i = 0; i <= 5; i++) { 
  4.             if(n!=0){
  5.                 fn = fn * i;
  6.             }
  7.             System.out.println( n+"! = "+fn);
  8.             n++;
  9.         }
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: ciclos, factorial
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:10.