Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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? Why do I see called again even after a found it? And if I put a return in front of the recursive call, why do I never see 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
 }
like image 970
rswerve Avatar asked Feb 24 '26 10:02

rswerve


1 Answers

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

I.e. when found your done. If not keep going.

like image 88
Ed Heal Avatar answered Feb 25 '26 22:02

Ed Heal



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!