Exercicio Fatorial

4 respostas
bRadoCk

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.
public double fatorial(double valor) {
        if (valor == 0) {
            return 1;
        }
        return valor * fatorial(--valor);

    }
foi feito em JSP....
<%

                    double valor = 170;


                    if (valor != 0) {

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

                    }

        %>

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

4 Respostas

daveiga

Substititua o ‘double’ por BigInteger.

R

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

williamdasflores

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

R
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));
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.
Criado 2 de maio de 2011
Ultima resposta 3 de mai. de 2011
Respostas 4
Participantes 5