Java 返回负数的递归阶乘方法
这是我的阶乘方法:Java 返回负数的递归阶乘方法,java,factorial,Java,Factorial,这是我的阶乘方法: 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)); 21、22和24都是负值,
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));
21、22和24都是负值,为什么会发生这种情况?这是一种“被0除”的悖论吗?你在漫漫长河。您需要根据包含长值的二进制数来考虑它。只要在long可以包含的最大正值上加1,它就会滚动到最小负值 你可能想阅读这篇文章以获得充分的理解。 在Java中,可以使用BigInteger来表示更大的值
完整性:一个
长的中最大的阶乘拟合是20!
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