返回不会在javascript

时间:2016-04-23 07:04:52

标签: javascript recursion

我已经阅读了这个问题的十几个变种,但这些答案并没有让我知道一个明显的错误。为什么这总是返回false?为什么即使在called again之后我也会看到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
 }

1 个答案:

答案 0 :(得分:4)

更改

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;
    }
}

即。什么时候找到你的。如果不继续下去。