永发信息网

java编程计算:1!+2!+3!+......+(n-1)+n!

答案:1  悬赏:0  手机版
解决时间 2021-11-24 01:30
  • 提问者网友:浪荡绅士
  • 2021-11-23 11:06
java编程计算:1!+2!+3!+......+(n-1)+n!
最佳答案
  • 五星知识达人网友:空山清雨
  • 2019-10-18 09:38
package test;

import java.math.BigDecimal;

public class T {
public static void main(String[] args) {
// System.out.println(cal_(10));
System.out.println(cal(10));
}

// 输入10:

// 10的阶乘:3628800
// 9的阶乘:362880
// 8的阶乘:40320
// 7的阶乘:5040
// 6的阶乘:720
// 5的阶乘:120
// 4的阶乘:24
// 3的阶乘:6
// 2的阶乘:2
// 1的阶乘:1
// 3628800+362880+40320+5040+720+120+24+6+2+1=4037913

public static BigDecimal cal_(int num) {
BigDecimal n = factorial(num);
System.out.printf("%3d的阶乘:" + n + "\n", num);
if (num > 1) {
return factorial(num).add(cal(num - 1));
} else {
throw new IllegalArgumentException(String.valueOf(num));
}
}

// 1!+2!+3!+4!;
// 1 +2 +6 +24
public static BigDecimal cal(int num) {
String t = "";
BigDecimal bigDecimal = BigDecimal.valueOf(0);
for (int i = num; i > 0; i--) {
BigDecimal n = factorial(i);
System.out.printf("%3d的阶乘:" + n + "\n", i);
bigDecimal = bigDecimal.add(n);
t += n + (i - 1 > 0 ? "+" : "=");
}
System.out.println(t + bigDecimal);
return bigDecimal;
}

// 9!=9*8*7*6*5*4*3*2*1
public static BigDecimal factorial(int num) {
BigDecimal d = BigDecimal.valueOf(num);
if (num > 1)
return factorial(num - 1).multiply(d);
else if (num > 0) {
return BigDecimal.valueOf(1);
} else {
throw new IllegalArgumentException(String.valueOf(num));
}
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯