求1+2!+3!+...+20!的和
题目
题目:求1+2!+3!+...+20!的和。
算法分析
此题可以拆解为两部分,一部分是对每个数通过《递归介绍和利用递归算法求阶乘》中介绍的递归算法求阶乘,一部分是对每个阶乘结果累加求和。显然,第一部分就是直接调用函数recursionPlus。
源码实现
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 += recursionPlus(i);
}
System.out.println(max +"的阶乘累加之和为 " + sum);
}
/**
* 简化代码流程
*/
public static long recursionPlus(long num) {
if (num <= 1) {
return num;
}
return num * recursionPlus(num - 1);
}
为了保证代码的完整性,这里再次给出了recursion函数。算法执行结果如下:
20的阶乘累加之和为 2561327494111820313
读后有收获,小礼物走一走,请作者喝咖啡。
Buy me a coffee. ☕Get red packets.
作者:楼兰胡杨
本文版权归作者和博客园共有,欢迎转载,但请注明原文链接,并保留此段声明,否则保留追究法律责任的权利。