递归

递归


什么是递归:
直接或间接调用函数本身,则该函数称为递归函数

  • 递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回
    代码
//平铺一个JSON
var arr = [{
            id: '1',
            name: '课程1',
            children: [{
                    id: '2',
                    name: '课程2',
                },
                {
                    id: '3',
                    name: '课程3',
                    children: [{
                            id: '4',
                            name: '课程4',
                        },
                        {
                            id: '5',
                            name: '课程5',
                        }
                    ]
                }
            ]
        },
        {
            id:'6',
            name:'课程6'
        },
        {
            id:'7',
            name:'课程7'
        },
    ]
        let app = []    // 声明一个空数组
     
        function fn(arr) {    // 构建函数 fn
        
            for (var i = 0; i < arr.length; i++) {    // 遍历arr (我这里用的for  也可用forEach)
            
                app.push(arr[i])    // 将遍历的数据push进新的数组中
            
                if (arr[i].children) {    // 判断遍历的数据中是否有children
                
                    fn(arr[i].children)    // 有的话 调用自身
                
                }
            }
            app.forEach(res=>{    // 遍历app
            
                delete res.children    // 删除res中的children
            
            })
        }
        var a = fn(arr)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值