import java.math.BigInteger; public class Test02{ /** * 计算从1到n个数的阶乘的总和 * @param s * @return */ public static BigInteger summation(int n){ BigInteger sum = new BigInteger("0"); if(n <= 1) return BigInteger.ONE; //因0!= 1 所以 n <= 1 时返回 1 for(int i=1; i<=n; i++){ sum = sum.add(factorial(i)); } return sum; } /** * (递归)计算 n 的阶乘 * @param n * @return sum */ public static BigInteger factorial(int n){ if(n > 0){ return BigInteger.valueOf(n).multiply(factorial(n-1)); }else{ //因0!= 1 所以 n <= 1 时返回 1 return BigInteger.ONE; } } public static void main(String[] args){ for(int i=1; i<=30; i++){ System.out.println(i + " 的阶乘 = " + factorial(i)); } for(int i=1; i<=30; i++){ System.out.println("从1到" + i + "的阶乘的总和 = " + summation(i)); } } } //java/7035