关于求阶乘和的问题

首先什么是阶乘 简单点说一个数n的阶乘为 1*2*3*4*5....*n

看看 1- 30的阶乘已经他们的和

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的阶乘是24,那么我们从 1*2*3*4=24这是求4的阶乘,除了这样的话,我们还可以用3的阶乘 乘4 3的阶乘是6乘4也是等于24,同样3的阶乘一样可以用2的阶乘来乘3,2的阶乘是2*3也等于6,于是就有了一个规律n!=(n-1)!*n 

public class Jiecheng 
{
public static void main(String[] args) 
{
System.out.println(jiecheng(20));

}
public static long jiecheng(int num)
{
long sum=0,a=1;
for(int i=1;i<=num;i++)
{
 
a*=i;
sum+=a;


}
return sum;
}
}

结果为2561327494111820313

这样就可以用一个循环得出统计出来1到30的阶乘和,而使用递归或者for嵌套来算,则浪费空间和时间,

不过有的道友就说了这个不是求阶乘,我确实也知道这个看起来确实不像求阶乘,但是结果的确是对的吗,我只是发现一个规律,利用这个规律来简化了代码,在这里希望各位道友能给指点一下这个到底算不算是求阶乘的和

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值