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);
}