我已经阅读了这个问题的十几个变种,但这些答案并没有让我知道一个明显的错误。为什么这总是返回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
}
答案 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;
}
}
即。什么时候找到你的。如果不继续下去。