Bonjour,
J'ai écrit une fonction récursive qui calcule la factorielle d'un entier. J'utilise la classe Long.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
// Calcule n! 
private Long Fact(Long n) {
  if( n <= 1 )
    return Long(1);
  else
    return n*Fact(n-1);
}
J'affiche le résultat dans la console, et ça marche jusqu'à 20!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
System.out.println(Fact(20L));
me donne 2432902008176640000
mais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
System.out.println(Fact(21L));
donne -4249290049419214848

Où est mon erreur ?
Merci
Philippe