package algs.factorial;
import java.math.BigInteger;
/**
* Author: areful
* Date: 2019/3/6
* 计算 sum(n!), n=1,2, ... 20
*/
public class NFactorial {
public static void main(String[] args) {
System.out.println(calcFactorial0(3));
System.out.println(calcFactorial1(3));
System.out.println(calcFactorial2(3));
System.out.println(calcFactorial0(50));
System.out.println(calcFactorial1(50));
System.out.println(calcFactorial2(50));
}
private static long calcFactorial0(int n) {
long sum = 0L;
long l = 1L;
for (int i = 1; i <= n; i++) {
l *= i;
sum += l;
}
return sum;
}
private static double calcFactorial1(int n) {
double sum = 0L;
double l = 1L;
for (int i = 1; i <= n; i++) {
l *= i;
sum += l;
}
return sum;
}
private static BigInteger calcFactorial2(int n) {
BigInteger sum = BigInteger.valueOf(0L);
BigInteger l = BigInteger.valueOf(1L);
for (int i = 1; i <= n; i++) {
BigInteger mul = BigInteger.valueOf(i);
l = l.multiply(mul);
sum = sum.add(l);
}
return sum;
}
}
运行结果: