public class FactorialTest {
public static void main(String[] args) {
//键盘输入10即可,当然也可以输入其他数值
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
BigDecimal result =new BigDecimal(0);
BigDecimal sum = new BigDecimal(0) ;
for(int i=1;i<=num;i++){
result = factorial(i);//返回每个阶乘的值
sum = sum.add(result);//将返回的值进行相加
}
System.out.println(sum);
}
//每个数的阶乘求值方法
public static BigDecimal factorial(int n){
BigDecimal result = new BigDecimal(1);
BigDecimal a;
for(int i = 2; i <= n; i++){
a = new BigDecimal(i);//将i转换为BigDecimal类型
result = result.multiply(a);//不用result*a,因为BigDecimal类型没有定义*操作
}
return result;
}
}