Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回负数的递归阶乘方法_Java_Factorial - Fatal编程技术网

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