Exercicio Fatorial

Bom gente eh o seguinte, fiz um metodo pequeno para calcular um fatorial… so que o meu metodo ele faz o fatorial somente do numero 170 maior que 170 ele da o resultado como Infinity ! gostaria de saber se tem como tratar esse erro.

Metodo Fatorial.

[code]public double fatorial(double valor) {
if (valor == 0) {
return 1;
}
return valor * fatorial(–valor);

}[/code]

foi feito em JSP…

[code] <%

                double valor = 170;


                if (valor != 0) {

                    out.println("Fatorial de " + valor + " = " + fatorial(valor));

                }

    %>

[/code]

o aplicativo esta no ar naquele Google App Engine (GAE), se alguem quiser testar: http://groupunip-test.appspot.com/

Substititua o ‘double’ por BigInteger.

MAs mesmo assim, colocando o bigIntenger o java não conseguirá fazer fatorial de tantos números, isso é um ero de sistema

Isso deve ta acontecendo porque o valor deve ser muito alto, eu acho

[code]public int fatorial(int valor) {
int i=valor;
int resultado=valor;
whille (valor > 0) {
–i;
resultado*i;
}
return resultado;
}

out.println("Fatorial de " + valor + " = " + fatorial(valor));[/code]
Amigo isso deve resolver seu problema
Não intendi porque o uso do double, você vai fracionar o número?
se não não há necessidade, você estoura a memória a toa, tenta assim e joga outro número, se der certo manda um ok ai se nao avisa pra tentar te ajudar ok abraços.