题目
Description
求1+2!+3!+…+N!的和
Input
正整数N(N〈=20)
Output
1+2!+3!+…+N!的和 (结果为整数形式)
Sample Input
3
Sample Output
9
代码块
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int N = cin.nextInt();
System.out.println(sum(N));
cin.close();
}
//使用循环计算和
private static BigInteger sum(int n) {
BigInteger s = new BigInteger(Integer.toString(0));
for (int i = 1; i <= n; i++)
s=(s.add(factorial(i)));
return s;
}
//使用递归的方法计算每一个数的阶乘
private static BigInteger factorial(int i) {
//如果当i等于1时,返回1,如果不等于1 时 返回factori(i-1)和factori(i)的值
return i == 1 ? new BigInteger("1"): factorial(i - 1).multiply(
new BigInteger(Integer.toString(i)));
}
}