返回不会退出 javascript 中的递归函数

Return doesn't exit recursive function in javascript

本文关键字:递归函数 javascript 退出 返回      更新时间:2023-09-26

我已经阅读了关于这个问题的十几种变体,但这些答案并没有让我得出一个明显的错误。 为什么这总是返回false? 为什么即使在found it后我也能看到called again? 如果我在递归调用前面放一个return,为什么我看不到found it

function subResult (object, start, target){
    console.log('called again')
    if (start === target){
      console.log('found it')
      return true
    } else {
      for (var i = 0; i < object[start].edges.length; i++){
        subResult(object, object[start].edges[i], target)
      }
    }
   return false
 }

更改

for (var i = 0; i < object[start].edges.length; i++){
    subResult(object, object[start].edges[i], target)
}

for (var i = 0; i < object[start].edges.length; i++){
    if (subResult(object, object[start].edges[i], target)) {
       return true;
    }
}

即当发现你完成时。如果没有,请继续前进。