3
この質問ではダースのバリエーションを読んだことがありますが、これらの回答では明白な間違いではありません。なぜこれはいつもfalse
を返しますか? found it
の後にもcalled again
が表示されるのはなぜですか?また、再帰呼び出しの前にreturn
を置くと、なぜfound it
が表示されませんか?javascriptで戻り値が再帰関数を終了しない
for (var i = 0; i < object[start].edges.length; i++){
if (subResult(object, object[start].edges[i], target)) {
return true;
}
}
すなわちへ
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
}
うわー、それでした。本当にありがとう。だから私は "再帰呼び出しが真を返す場合、真を返す"のような何かを言っている?私は本当に最初の 'return true'を行い、再帰呼び出しを返すだけで十分だと思っていましたが(Abu Hanifaの答えのように)、' false'が常に返されました。 – rswerve