正在进入ing...

JavaScript函数递归实现阶乘

发布时间:2020-09-08 浏览量: 3348 文章分类: 前端相关

先说一下阶乘的算法

5的阶乘就是 5*4*3*2*1=120
4的阶乘就是 4*3*2*1 = 24

可以抽象出他的算法就是当前数*低一个数的阶乘 这里可以利用js的递归方式来进行实现。 先上一下实现的函数

        function factorial(num){
            if (num <= 1)return 1;
            return num * factorial(num-1);
        }

下面在来逐步分析一下。 首先递归算法本身就是自己调用自己,但是必须要有终止条件,负责会无限递归下去。最终死循环。

我先加了一个判断条件也就是数字num如果是小于或者等于1的话,就直接返回1了。 然后这样接收到的数字就肯定是大于1的。 然后在进行处理return num * factorial(num-1)这句的意思就是如果num没有小于等于1的话,那就在当前的数字-1并再次调用这个函数。最终实现的逻辑就是

factorial(4);
运算原理:
return 4 * factorial(3);
return 3 * factorial(2);
return 2 * factorial(1);
然后就实现了我们的计算结果:4*3*2*1 = 24

factorial(5);
运算原理:
return 5 * factorial(4);
return 4 * factorial(3);
return 3 * factorial(2);
return 2 * factorial(1);
然后就实现了我们的计算结果:5*4*3*2*1 = 120

当然借用函数的arguments.callee方法可以在完善一下我们的函数

        function factorial(num){
            if (num <= 1)return 1;
            return num * arguments.callee(num-1);
        }