求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

posted @ 2022-12-31 20:21  楼兰胡杨  阅读(333)  评论(0编辑  收藏  举报