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)

 

posted @ 2022-08-19 10:26  Mahmud(مەھمۇد)  阅读(237)  评论(0编辑  收藏  举报