美文网首页
关于递归的使用

关于递归的使用

作者: 湾里晴空 | 来源:发表于2018-05-10 19:20 被阅读0次

递归算法在拉平数组中有很多中用法,下面介绍两种

 function flatten(arr){
        arr2 = []
        function _flat(arr){
        arr.forEach(val => {
            if(Array.isArray(val)){_flat(val)}
            else( arr2.push(val))
            
        });
        }
        _flat(arr)
        return arr2
    }
        var arr = [1, [2], [3, [[4]]]]
        var arr2 = flatten(arr)
        console.log(arr2)
  • 注意:在拉平的时候最好不要引进i,因为你没办法确定i的值。
  • 使用数组判断语句是Array.IsArray(val) 判断val是否为数组
  • 在中间引入新的函数_flat是为了避免上面的arr2重复,同时可以单独调用

方法二

 function flattern2(arr){
                return arr.reduce(function(initArr,currentArr){
                return initArr.concat(Array.isArray(currentArr)?flattern2(currentArr):currentArr)
                },[])
            }
                   var arr = [1, [2], [3, [[4]]]]
            var arr2 = flattern2(arr)
            console.log(arr2)

方法十分巧妙,使用拼接语句,其中reduce主要是起一个遍历的作用。

相关文章

  • go递归

    1.递归的使用 使用递归快速排序 2.关于递归上下文的测试 运行的结果如下:

  • 关于递归的使用

    递归算法在拉平数组中有很多中用法,下面介绍两种 注意:在拉平的时候最好不要引进i,因为你没办法确定i的值。 使用数...

  • sql自学笔记(十七)——MySQL8.0版本的新特性(七)

    非递归CTE MySQL8.0开始支持通用表达式(CTE),即WITH子句。 在8.0中关于非递归CTE的使用 先...

  • 如何写一个 flatten

    普通的递归 内部有一个用于递归的函数, 递归地去处理类型是数组的元素 使用 reduce (内部还是递归) 使用c...

  • 递归

    Python 3 : 1、使用递归实现倒计时 2、使用递归实现列表元素相加 3、使用递归计算列表包含的元素数 4、...

  • 如何写出高性能的代码

    使用StringBuilder来连接字符串 避免递归(无法避免时,使用尾递归代替头递归) 谨慎使用正则表达式 循环...

  • leetcode 94 二叉树中序遍历和 leetcode 14

    leetcode 94 使用栈,非递归解法: leetcode 144 使用栈,非递归解法:

  • 数据结构----递归

    1.使用递归实现阶乘 2.用递归求和(普通实现方式) 3.另一种递归求和实现 4.循环和递归的优缺点 使用递归能实...

  • 浅实现一下,Array.flatten(Infinity)的降维

    1. 使用for循环+递归 2. reduce + 递归

  • 语句

    在使用递归的时候,需要记住以下技巧: 确认递归能够停止 使用安全计数器防止出现无穷递归 把递归限制在一个子程序内 ...

网友评论

      本文标题:关于递归的使用

      本文链接:https://www.haomeiwen.com/subject/ecjzrftx.html