for (int i = 0; i <= 25; i++) System.out.printf("%d! = %,d\n", i, factorial(i));
The above code initializes the factorial method below:
public static long factorial(int num1) { if (num1 == 0) return 1; else return Math.abs(num1 * factorial(num1 - 1)); }
The following output is also generated:
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
Result for 21! (this should be 51 090 942 171 709 440 000), and the result becomes completely bent for 22! and higher. Can someone explain why?