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));
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询