O instrutor disse:
Isso acontece porque, a partir de 16!, o valor supera o limite superior do tipo int. O tipo long consegue armazenar o cálculo dos fatoriais até 34!.
Porém está errado. A long só suporta até a 20;
Façam o teste com 21 em diante e vejam:
class fatoriaisUmDez {
public static void main (String[] args) {
long fat = 1;
for (int q = 1; q <= 21; q++) {
fat = fat * q;
System.out.println("fat(" + q + ") = " + fat);
}
}
}
Se observaram, a partir de 21 a long abre. Eu gostaria de saber qual das primitivas devo usar, pois a long e a int não funcionam à partir do fatorial de 21.
Muito Obrigado!