JS循环和递归的方法实现: 1*2*3...n 阶乘
JS循环和递归的方法实现: 1*2*3...n 阶乘(递归的方法和普通方法)
就是函数自己调用自己本身,或者在自己函数调用的下级函数中调用自己。
方法1:
function fn(n) { // 判断: 如果是n=1 直接输出1 退出 if (n == 1) { return 1; } // 如果是不是 n=1的话 递归方式这样写,以此类推(n...3*2*1)为止 return n * fn(n - 1); } console.log(fn(3)); console.log(fn(4)); // 思路:假如用户输入了3 return 3 * fn(2) return 3 * (2 * fn(1)); return 3 * (2 * (2 * 1)); return 3 * (2); return 6 // 思路就是这样执行下去计算 普通的循环方法
还有几种常用的方法:
方法2:
var fn2 = function (n) { if (n < 2) { // console.log(arguments); return 1; } return n * arguments.callee(n - 1); } console.log(fn2(5));
方法3:
var fn3 = function (n) { return n > 1 ? n * fn3(n - 1) : 1; } console.log(fn3(5));
方法4:
var fn4 = function (n) { var s = 1; for (var i = 1; i <= n; i++) { s = s * i; } console.log(s); } fn4(5)