2012-11-01 71 views
3

這是我的階乘方法:遞歸階乘方法返回一些負數

public static long factorial(int num1) { 
    if (num1 <= 1) 
     return 1; 
    else 

     return num1 * factorial(num1 - 1); 
} 

而這就是調用這個遞歸階乘方法:

  for (i = 0; i <= 25; i++) 
       System.out.printf ("%d != %,d\n", i, factorial (i)); 

到目前爲止好,輸出似乎是正確的第一,但一些階乘是負的,而不是正:

OUTPUT: 
0 != 1 
1 != 1 
2 != 2 
3 != 6 
4 != 24 
5 != 120 
6 != 720 
7 != 5,040 
8 != 40,320 
9 != 362,880 
10 != 3,628,800 
11 != 39,916,800 
12 != 479,001,600 
13 != 6,227,020,800 
14 != 87,178,291,200 
15 != 1,307,674,368,000 
16 != 20,922,789,888,000 
17 != 355,687,428,096,000 
18 != 6,402,373,705,728,000 
19 != 121,645,100,408,832,000 
20 != 2,432,902,008,176,640,000 
21 != -4,249,290,049,419,214,848 
22 != -1,250,660,718,674,968,576 
23 != 8,128,291,617,894,825,984 
24 != -7,835,185,981,329,244,160 
25 != 7,034,535,277,573,963,776 

21,22和24是負的,這是爲什麼噸他的發生?這是一種「除以0」的悖論嗎?

回答