【习题21】求阶乘的和

【程序21】
题目:求1+2!+3!+...+20!的和

package com.share.test21_30;

/**
 * 【程序21】题目:<br>
 * 求1+2!+3!+...+20!的和 
 * 
 * @author brx
 */
public class Test21 {
    public static void main(String[] args) {
        test();
        test2();
    }

    /**
     * 思路1:<br>
     * 阶乘,第n个数乘以第前面n-1个数的积,递归思路,每一层都乘以该成的序列号,最后的结果就是从1乘到n
     */
    public static void test() {
        int sum = 0;
        for (int i = 1; i <= 20; i++) {
            sum += test1(i);
        }
        System.out.println("前20项阶乘的和为:" + sum);
    }

    // 递归
    public static int test1(int n) {
        int result = 1;
        if (n > 1) {
            result = n * test1(n - 1);
        }
        return result;
    }

    /**
     * 思路2:<br>
     * 不使用递归,将结果存进变量中然后递变
     */
    public static void test2() {
        int product = 1;
        int sum = 0;
        for (int i = 1; i <= 20; i++) {
            product *= i;
            sum += product;
        }
        System.out.println("前20项阶乘的和为:" + sum);
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容