Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: xtc3 en 07 de Abril 2014, 13:33

Título: calcular factorial de un número con java usando bucle for
Publicado por: xtc3 en 07 de Abril 2014, 13:33
Antes de nada agradecer una vez mas su ayuda ya que me están ayudando muchisimo y estoy aprendiendo mucho de todos vosotros. :)

Estoy intentando hacer un problema para que me devuelva el factorial de un numero pero me devuelve mas de lo que quiero, me gustaria que me devolviera el factorial del numero 5 pero me devuelve 600 cuando 5*4*3*2*1 da como resultado 120.

Este es el código aver si me pueden decir a que se debe.

Código: [Seleccionar]
public class factorial {

/**
* EN ESTE EJERICIO VAMOS A TRABAJAR EL FUNCIONAMIENTO DE LOS METODOS
* VAMOS A OBTENER EL FACTORIAL DE UN NUMERO
*/


//definimos el metodo

public double producto (int n) { //LE PASAMOS UN ENTERO COMO ARGUMENTO
double resultado;//VARIABLE PARA GUARDAR EL RESULTADO
for (resultado=n; n>1;n--)resultado *=n;  //EL RESULTADO LE ASIGNAMOS EL NUMERO,MIENTRAS SEA MAYOR QUE UNO QUE RESTE 1 Y LO MULTIPLIQUE POR EL NUMERO
return resultado; //INSTRUCCION PARA QUE EL METODO NOS DEVUELVA EL RESULTADO
}


public static void main(String[] args) { //comienza el programa
//CREAMOS EL OBJETO

factorial factorial1 = new factorial();
double x=factorial1.producto(5); //llamamos al metodo
System.out.println(factorial1.producto(5));
}

}

Título: Re:Por que no sale el factorial de este numero???
Publicado por: Mastermind en 07 de Abril 2014, 15:59
Dos cosas a cambiar: en el método producto la obtención de resultado no está bien definida, y por otro lado la línea double x=factorial1.producto(5); sobra, ya que el método ya lo estás llamando directamente desde el System.out.println

Quedaría así  ;):

Código: [Seleccionar]
public class factorial {
//definimos el metodo
public double producto (int n) { //LE PASAMOS UN ENTERO COMO ARGUMENTO
double resultado;//VARIABLE PARA GUARDAR EL RESULTADO
for (resultado=n; n>1;n--) {resultado = resultado*(n-1);}  //EL RESULTADO LE ASIGNAMOS EL NUMERO,MIENTRAS SEA MAYOR QUE UNO QUE RESTE 1 Y LO MULTIPLIQUE POR EL NUMERO
return resultado; //INSTRUCCION PARA QUE EL METODO NOS DEVUELVA EL RESULTADO
}

public static void main(String[] args) { //comienza el programa
factorial factorial1 = new factorial();
System.out.println(factorial1.producto(5));
}
}
Título: Re:Por que no sale el factorial de este numero???
Publicado por: xtc3 en 07 de Abril 2014, 18:43
muchísimas gracias!!!! ya esta resuelto :)  :D