Java必做算法题-求1+2!+3!+...+20!的和(递归方法)


求1+2!+3!+…+20!的和(递归方法)

解题思路,
第一步要先获取每个阶乘的值
第二步,把每个值相加
第三步想如何用递归方法 实现


一、什么是阶乘?

阶乘的意思就是把这个数的,从1到自身的整数 相乘
2!= 1 * 2
3!= 1 * 2 * 3
4!= 1 * 2 * 3 * 4
5!= 1 * 2 * 3 * 4 * 5
以此类推

二、递归方法 求阶乘的积

求n数的阶乘= n *(n-1)!

5!= 1 * 2 * 3 * 4 * 5 即 5!= 5 * 4!;
4!= 1 * 2 * 3 * 4 即 4!=4 * 3!;

代码如下(示例):

 //阶乘返回值
    public static long factorial(int number) {
        if (number == 1||number==0) {
            return 1;
        } else{
            return  number * factorial(number - 1);
        }
    }

2.递归方法 求每个阶乘的积相加的和

定义一个sum用来接收使用factorial方法后返回阶乘的积

代码如下(示例):

//计算各阶层的和
    public static long factorialSum(int number){
        if (number == 0||number==1) {
            return 1;
        } else{
            long sum =0;
             sum += factorial(number);
             return sum+factorialSum(number-1);
        }
    }

完整的代码

public class Task1217_3 {
    public static void main(String[] args) {
        System.out.println(factorialSum(20));
    }
    //阶乘返回值
    public static long factorial(int number) {
        if (number == 1||number==0) {
            return 1;
        } else{
            return  number * factorial(number - 1);
        }
    }
    //计算各阶层的和
    public static long factorialSum(int number){
        if (number == 0||number==1) {
            return 1;
        } else{
            long sum =0;
             sum += factorial(number);
             return sum+factorialSum(number-1);
        }
    }
}

版权声明:本文为qq_39215490原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。