Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Fatorial

Só por curiosidade, alguém sabe porque alguns resultados do fatorial dão negativo, mesmo usando long?

       long fatorial = 1L;
        for (int y = 1; y < 51; y++) {
            fatorial *= y;
            System.out.println("Fatorial de "+ y + " = " + fatorial);
        }
3 respostas

Oi Marcelo, mesmo o long ele tem um limite de tamanho:

De -922337203685477808 até 922337203685477807

O valor do fatorial está superando esses limites?

solução!

É justamente por causa do tamanho máxima do long, como o Joel disse. Se não me engano quando você começar a calcular fatorial de 30 e pouco para cima já começa a estourar o tamanho do long no resultado.

se você usar o tipo double ele não estoura, pois suporta tamanhos maiores.. eu usei e deu certo :)