搜 索

JavaScript递归

  • 336阅读
  • 2022年03月13日
  • 0评论
首页 / JS高级 / 正文

题一、用递归方式求阶乘

        function fn(n) {
            if (n == 1) {
                return 1;
            }

            return n * fn(n - 1);
        }

        console.log(fn(3));

        // 解析:
        // 1、return 3 * fn(3-1);
        // 2、return 3 * fn(2);
        // 3、return 3 * 2 * fn(2-1);
        // 4、return 3 * 2 * fn(1);
        // 5、return 3 * 2 * 1; 因为n等于1的话就返回为1


题二、用递归方式求阶乘

        let sum = 0;
        function fn(n) {
            if (n == 0) {
                return
            }

            sum += n;

            // 每次让n的值减1
            fn(n - 1)
        }

        fn(100)


题三、用递归方式遍历复杂数据

    <script>
        var data = [{
            id: 1,
            name: '家电',
            goods: [{
                id: 11,
                gname: '冰箱',
                goods: [{
                    id: 111,
                    gname: '海尔'
                }, {
                    id: 112,
                    gname: '美的'
                },]
            }, {
                id: 12,
                gname: '洗衣机'
            }]
        }, {
            id: 2,
            name: '服饰'
        }];

        function fn(obj, id) {
            let o = {};
            obj.forEach(function (item) {
                if (item.id == id) {
                    o = item;
                } else if (item.goods && item.goods.length > 0) {
                    o = fn(item.goods, id)
                }
            })

            return o;
        }

        console.log(fn(data, 1));
        console.log(fn(data, 11));
        console.log(fn(data, 111));
        console.log(fn(data, 112));
    </script>
无标签
评论区
暂无评论
avatar