如何跳出递归?

有一树状数据结构;假设有5个分支;现在我要找到一个节点;该结点在第一个分支的第三层;怎在找到这个节点后后面的树都不遍历了?也就是跳出整个递归?我写了一个简单的测试发现并不能跳出递归

var arr = [[1,2],[3,4]]
const deep = (arr) => {
    for (let i = 0; i < arr.length; i++) {
        if (Array.isArray(arr[i])) {
            deep(arr[i])
        } else {
            console.log(arr[i])
            if (arr[i] === 2) return 
        }
    }
}
deep(arr)

还是说递归本身是无法中断的?

阅读 7.5k
1 个回答

给你的deep函数添加一个返回值, 然后循环的时候判断这个值

const deep = arr => {
    for (let i = 0; i < arr.length; i++) {
        if (Array.isArray(arr[i])) {
            if(deep(arr[i]))
                return true
        } else {
            console.log(arr[i])
            if (arr[i] === 2) return true
        }
    }
    return false
}

不存在递归无法跳出的情况, 所有递归都能改成循环, 都可以跳出

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题