题目
题目:求1+2!+3!+...+20!的和。
算法分析
总共两个部分组成,一部分是对每个数通过《利用递归方法求阶乘》中介绍的递归算法求阶乘,一部分是累加求和。显然,第一部分就是直接调用函数recursion。
源码实现
Java 语言的实现方法如下:
public static void main(String[] args) {
sum(20);
}
/**
* 对阶乘求和
*/
public static void sum(Integer max) {
long sum = 0;
for (int i = 1; i <= max; i++) {
sum += recursion(i);
}
System.out.println(max +"的阶乘累加之和为 " + sum);
}
/**
* 递归求阶乘
*
* @param n 阶乘数
*/
public static long recursion(long n) {
long value = 0;
if (n == 1 || n == 0) {
value = 1;
} else if (n > 1) {
value = n * recursion(n - 1);
}
return value;
}
为了保证代码的完整性,这里再次给出了recursion函数。算法执行结果如下:
标签:20,recursion,sum,算法,阶乘,+...+ From: https://www.cnblogs.com/east7/p/17017199.html20的阶乘累加之和为 2561327494111820313