Java计算1-n个数阶乘的和

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)); 
        }                
    } 
}

运行结果:

1 的阶乘 = 1
2 的阶乘 = 2
3 的阶乘 = 6
4 的阶乘 = 24
5 的阶乘 = 120
6 的阶乘 = 720
7 的阶乘 = 5040
8 的阶乘 = 40320
9 的阶乘 = 362880
10 的阶乘 = 3628800
11 的阶乘 = 39916800
12 的阶乘 = 479001600
13 的阶乘 = 6227020800
14 的阶乘 = 87178291200
15 的阶乘 = 1307674368000
16 的阶乘 = 20922789888000
17 的阶乘 = 355687428096000
18 的阶乘 = 6402373705728000
19 的阶乘 = 121645100408832000
20 的阶乘 = 2432902008176640000
21 的阶乘 = 51090942171709440000
22 的阶乘 = 1124000727777607680000
23 的阶乘 = 25852016738884976640000
24 的阶乘 = 620448401733239439360000
25 的阶乘 = 15511210043330985984000000
26 的阶乘 = 403291461126605635584000000
27 的阶乘 = 10888869450418352160768000000
28 的阶乘 = 304888344611713860501504000000
29 的阶乘 = 8841761993739701954543616000000
30 的阶乘 = 265252859812191058636308480000000
从1到1的阶乘的总和  = 1
从1到2的阶乘的总和  = 3
从1到3的阶乘的总和  = 9
从1到4的阶乘的总和  = 33
从1到5的阶乘的总和  = 153
从1到6的阶乘的总和  = 873
从1到7的阶乘的总和  = 5913
从1到8的阶乘的总和  = 46233
从1到9的阶乘的总和  = 409113
从1到10的阶乘的总和  = 4037913
从1到11的阶乘的总和  = 43954713
从1到12的阶乘的总和  = 522956313
从1到13的阶乘的总和  = 6749977113
从1到14的阶乘的总和  = 93928268313
从1到15的阶乘的总和  = 1401602636313
从1到16的阶乘的总和  = 22324392524313
从1到17的阶乘的总和  = 378011820620313
从1到18的阶乘的总和  = 6780385526348313
从1到19的阶乘的总和  = 128425485935180313
从1到20的阶乘的总和  = 2561327494111820313
从1到21的阶乘的总和  = 53652269665821260313
从1到22的阶乘的总和  = 1177652997443428940313
从1到23的阶乘的总和  = 27029669736328405580313
从1到24的阶乘的总和  = 647478071469567844940313
从1到25的阶乘的总和  = 16158688114800553828940313
从1到26的阶乘的总和  = 419450149241406189412940313
从1到27的阶乘的总和  = 11308319599659758350180940313
从1到28的阶乘的总和  = 316196664211373618851684940313
从1到29的阶乘的总和  = 9157958657951075573395300940313
从1到30的阶乘的总和  = 274410818470142134209703780940313
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值