1!+2!+⋯+n!(1≤n≤50) (Java计算阶乘)
当java计算阶乘结果较大时,可以用BigInteger
方法一(递归):
import java.math.BigInteger;
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) {
int n;
BigInteger S = new BigInteger("0");
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
if (n >= 1 && n <= 50) {
for (int i = 1; i <= n; i++) {
S = S.add(f(i));
}
System.out.println(S);
} else {
System.out.println("输入的数据范围出错!");
}
}
public static BigInteger f(int n) {
if (n == 1) {
return BigInteger.valueOf(1);
} else {
// return n.multiply(f(n.subtract(BigInteger.valueOf(1))));
return BigInteger.valueOf(n).multiply(f(n-1));
}
}
}
方法二:
import java.math.BigInteger;
import java.util.Scanner;
class Test3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
BigInteger b1 = new BigInteger("0");
if (n >= 1 && n <= 50){
for (int i = 1;i <= n; i++){
b1 = b1.add(getFactorial(i));
}
System.out.print(b1);
}
}
public static BigInteger getFactorial(int n) {
BigInteger result = new BigInteger("1");
for (int i = 1; i <= n; i++) {
result = result.multiply(BigInteger.valueOf(i));
}
return result;
}
}