如何跳出递归?

有一树状数据结构;假设有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)

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


慕码人2483693
浏览 1265回答 1
1回答

一只甜甜圈

给你的deep函数添加一个返回值, 然后循环的时候判断这个值const&nbsp;deep&nbsp;=&nbsp;arr&nbsp;=>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(let&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;arr.length;&nbsp;i++)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Array.isArray(arr[i]))&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(deep(arr[i]))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(arr[i])&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(arr[i]&nbsp;===&nbsp;2)&nbsp;return&nbsp;true &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false}不存在递归无法跳出的情况, 所有递归都能改成循环, 都可以跳出
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript