Bonjour à tous!

J'ai un petit problème avec ce bout de code qui calcule les factoriels de 1! à 25!. En effet, 21! affiche un résultat négatif. Je ne comprend pas pourquoi

Voici le bout de code que j'utilise :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Factorial 
{ 
  // Evaluate n! 
  public static long factorial(int n) 
  { 
    if (n <= 1)     // base case 
      return 1; 
    else 
      return n * factorial(n - 1); 
  } 
 
  // Simple test program 
  public static void main(String [] args) 
  { 
    for (int i = 1; i <= 25; i++) 
      System.out.println(i + "! = " + factorial(i)); 
  } 
}


Voici l'affichage:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
11! = 39916800
12! = 479001600
13! = 6227020800
14! = 87178291200
15! = 1307674368000
16! = 20922789888000
17! = 355687428096000
18! = 6402373705728000
19! = 121645100408832000
20! = 2432902008176640000
21! = -4249290049419214848
22! = -1250660718674968576
23! = 8128291617894825984
24! = -7835185981329244160
25! = 7034535277573963776
Merci pour votre aide, ou pour vos suggestions!

Loader