什么是阶乘?
引用百度百科解释:(阶乘)
阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。
亦即n!=1×2×3×…×(n-1)×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
任何大于等于1 的自然数n 阶乘表示方法:
n! = n*(n-1)! 或 n! = 1 x 2 x 3 x 4 x 5 ··· x (n-1)n
0的阶乘为 0!= 1。
阶乘和
a = 1!+2!+3!+…+n!
java 实现阶乘和
```java
public class SumOfFactorial1 {
/**
* 当前 方法 循环 从1开始到n的每个数
* factorial() 方法计算1,2,3,4,5 ···· n 的 阶乘
* 阶乘和 ans = factorial(i) + ans;
*/
public static long fac(int n){
long ans = 0; // 先定义变量,默认返回值
//循环从1 开始 到 当前 传进来的值大小
for(i = 1;i <= n;i++){
ans += factorial(i);
}
return ans;
}
/**
*计算阶乘
*/
public static long factorial(int n){
long ans = 1; // 先定义变量,默认返回值
for(i = 1;i <= n;i++){
ans *= i;
}
return ans;
}
//--------------- 以上是用两个方法 实现的 接下来 用一种 更简便的方法
public static void main(String[] args) {
int n = 5;
System.out.println(fac(n));
}
}
以上是用两个方法 实现的 接下来 用一种 更简便的方法
```java
public class SumOfFactorial2 {
/**
* 阶乘和
*
*10
* 1的阶乘 :1*1 = 1
* 2的阶乘 :1*1* 2 = 2
* 3的阶乘 :1*1*2 *3 = 6
* 4的阶乘 :1*1*2*3 *4 = 24
* 5的阶乘 :1*1*2*3*4 *5 = 120
* 规律为 当前数的阶乘 等于 上一个数的阶乘 * 当前数
* 当前 为 4的阶乘 等于 3 的阶乘和 6 * 4 =24
* 5的阶乘 等于 4 的阶乘和 24 * 5 = 120
* 阶乘和 = 1*1 + 1*1* 2 + 1*1*2 *3 + 1*1*2*3 *4 + 1*1*2*3*4 *5
* 阶乘和 = 1 + 2 + 6 + 24 + 120 = 153
*/
public static long factorial(int n){
long cur = 1; // 先定义变量,保存每次循环的结果,默认为1
long ans = 0; // 定义返回值,默认 0
for(i = 1;i <= n;i++){
cur *= i; //cur * i = 上一个数阶乘的结果 * 当前数 = 当前数得阶乘值
ans += cur;
}
return ans;
}
public static void main(String[] args) {
int n = 5;
System.out.println(factorial(n));
}
}