简体   繁体   English

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

[英]Return doesn't exit recursive function in javascript

I've read the dozen variations on this question, but those answers haven't led me to what must be an obvious mistake. 我已经阅读了这个问题的十几个变种,但这些答案并没有让我知道一个明显的错误。 Why does this always return false ? 为什么这总是返回false Why do I see called again even after a found it ? 为什么我found it后再看到called again found it And if I put a return in front of the recursive call, why do I never see found it ? 如果我把一个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
 }

Change 更改

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

to

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

Ie when found your done. 即,当你找到你的时候。 If not keep going. 如果不继续。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM