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

 我来答
匿名用户
2018-06-15
展开全部
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));
}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式