update from Atlas
This commit is contained in:
49
operator/factorial/CorrectFactorial.java
Normal file
49
operator/factorial/CorrectFactorial.java
Normal file
@@ -0,0 +1,49 @@
|
||||
import java.math.BigInteger;
|
||||
|
||||
class CorrectFactorial {
|
||||
static final BigInteger two = new BigInteger("2");
|
||||
|
||||
public static BigInteger factorial(BigInteger n) {
|
||||
return n.compareTo(two) < 0 ? BigInteger.ONE
|
||||
: n.multiply(factorial(n.subtract(BigInteger.ONE)));
|
||||
}
|
||||
|
||||
public static void main(String args[]) {
|
||||
BigInteger upperBound = new BigInteger("25");
|
||||
for (BigInteger i = BigInteger.ONE;
|
||||
i.compareTo(upperBound) <= 0;
|
||||
i = i.add(BigInteger.ONE)) {
|
||||
System.out.println(i + "! = " + factorial(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* output:
|
||||
|
||||
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! = 51090942171709440000
|
||||
22! = 1124000727777607680000
|
||||
23! = 25852016738884976640000
|
||||
24! = 620448401733239439360000
|
||||
25! = 15511210043330985984000000
|
||||
|
||||
*/
|
||||
43
operator/factorial/SimpleFactorial.java
Normal file
43
operator/factorial/SimpleFactorial.java
Normal file
@@ -0,0 +1,43 @@
|
||||
class SimpleFactorial {
|
||||
|
||||
public static long factorial(long n) {
|
||||
return n < 2 ? 1 : n * factorial(n-1);
|
||||
}
|
||||
|
||||
public static void main(String args[]) {
|
||||
for (long i = 1; i <= 25; i++) {
|
||||
System.out.println(i + "! = " + factorial(i));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* output: ncorrect results starting with 21!
|
||||
|
||||
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
|
||||
|
||||
*/
|
||||
36
operator/factorial/factorial.py
Normal file
36
operator/factorial/factorial.py
Normal file
@@ -0,0 +1,36 @@
|
||||
def factorial(n):
|
||||
return 1 if n < 2 else n * factorial(n-1)
|
||||
|
||||
if __name__=='__main__':
|
||||
for i in range(1, 26):
|
||||
print('%s! = %s' % (i, factorial(i)))
|
||||
|
||||
"""
|
||||
output:
|
||||
|
||||
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! = 51090942171709440000
|
||||
22! = 1124000727777607680000
|
||||
23! = 25852016738884976640000
|
||||
24! = 620448401733239439360000
|
||||
25! = 15511210043330985984000000
|
||||
"""
|
||||
Reference in New Issue
Block a user