Recursion (Javascript) - does not exit recursion out of “IF” statement
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I am learning recursion in Javascript and here's what I got so far. This function traverses the tree and finds an object with the matching name propertity. As the start needs to be set as the root, I created a recursion to use the root as the starting point.
The first if statement in the for loop halfway should return the match. I've debugged pieces of it in the console so I know that the return is not working for whatever reason that I am not aware of (any insight would be great for learning purposes!).
The set console logs as I expect it to, the boolean check shows that a match does happen, but still getting undefined at the end!
findInTree(name) {
let start = this.first(); //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
} else {
findName(set, name);
}
}
}
}
return findName(start, name);
}
// returns undefined...
javascript recursion tree
add a comment |
I am learning recursion in Javascript and here's what I got so far. This function traverses the tree and finds an object with the matching name propertity. As the start needs to be set as the root, I created a recursion to use the root as the starting point.
The first if statement in the for loop halfway should return the match. I've debugged pieces of it in the console so I know that the return is not working for whatever reason that I am not aware of (any insight would be great for learning purposes!).
The set console logs as I expect it to, the boolean check shows that a match does happen, but still getting undefined at the end!
findInTree(name) {
let start = this.first(); //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
} else {
findName(set, name);
}
}
}
}
return findName(start, name);
}
// returns undefined...
javascript recursion tree
add a comment |
I am learning recursion in Javascript and here's what I got so far. This function traverses the tree and finds an object with the matching name propertity. As the start needs to be set as the root, I created a recursion to use the root as the starting point.
The first if statement in the for loop halfway should return the match. I've debugged pieces of it in the console so I know that the return is not working for whatever reason that I am not aware of (any insight would be great for learning purposes!).
The set console logs as I expect it to, the boolean check shows that a match does happen, but still getting undefined at the end!
findInTree(name) {
let start = this.first(); //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
} else {
findName(set, name);
}
}
}
}
return findName(start, name);
}
// returns undefined...
javascript recursion tree
I am learning recursion in Javascript and here's what I got so far. This function traverses the tree and finds an object with the matching name propertity. As the start needs to be set as the root, I created a recursion to use the root as the starting point.
The first if statement in the for loop halfway should return the match. I've debugged pieces of it in the console so I know that the return is not working for whatever reason that I am not aware of (any insight would be great for learning purposes!).
The set console logs as I expect it to, the boolean check shows that a match does happen, but still getting undefined at the end!
findInTree(name) {
let start = this.first(); //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
} else {
findName(set, name);
}
}
}
}
return findName(start, name);
}
// returns undefined...
javascript recursion tree
javascript recursion tree
edited Nov 22 '18 at 3:14
Elbert Bae
asked Nov 22 '18 at 3:10
Elbert BaeElbert Bae
33
33
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
You only want to return from your loop if the recursion found what you're looking for. Otherwise you want to keep looping. You can test the result and decide whether to return:
let obj = {
first: {
name: "test",
offspring:[
{name: "test1", offspring:},
{name: "test2", offspring:[{name:"test21", offspring:}]},
{name: "test3", offspring:[
{name: "test31", offspring:}
]},
]
},
findInTree(name) {
let start = this.first; //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
} else {
let found = findName(set, name); // only return if you've found
if (found) return found // what you're looking for
}
}
}
}
return findName(start, name);
}
}
console.log(obj.findInTree("test31"))
Hmm... I think I kind of get it, but just for clarification, is there a reason why the return doesn't happen in the if statement "(set.name === name)"? My understanding was that if one of the recursions found a match, they would exit the loop and return the match using the "if/else". Is there a reason why this isn't the case? And also thank you for taking the time to review the code, I'll definitely look into it in detail for a better understanding.
– Elbert Bae
Nov 22 '18 at 3:46
So if you trace it though the tree above what happens is it callsfindName()
on the first offspring where the name doesn't exit. So that function doesn't returnstart
because the condition doesn't match, and there's no children so it never runs the loop. The result is that it returns undefined. And returning from a for loop stops the loop and returns from the function before you get a chance to loop to the one containing what you want.
– Mark Meyer
Nov 22 '18 at 3:51
Oh! I see it now, wow. Thanks so much for the explanation Mark! Placement of the return, I'll keep an eye out for that moving forward.
– Elbert Bae
Nov 22 '18 at 4:07
add a comment |
Do you think this will work? Move the recursion call out of the for loop. only if the match is not found in the for loop, you call the function findName. If possible, can you put your code in jsfiddle or somewhere so that I can take a look.
findInTree(name) {
let start = this.first(); //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
}
}
return findName(set, name); //if the match is not found in the forloop, we call findname
}
}
return findName(start, name);
}
Just did a test run and unfortunately doesn't seem to work. Here's the jsfiddle link ! jsfiddle.net/4g6r5bz7
– Elbert Bae
Nov 22 '18 at 3:54
Most of your code looks good. I think you just need to add this to check whether match is undefined or not. let matchFound = findName(set, name); if(matchFound) return matchFound; I just saw that from the previous reply that you have already found the solution. Good to know.
– Bala
Nov 22 '18 at 4:23
Thank you for reviewing it! Yes, been looking into it to get a better understanding of how the matches take place in recursions, brushing up on how functions and loops react to returns!
– Elbert Bae
Nov 22 '18 at 4:34
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53423323%2frecursion-javascript-does-not-exit-recursion-out-of-if-statement%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
You only want to return from your loop if the recursion found what you're looking for. Otherwise you want to keep looping. You can test the result and decide whether to return:
let obj = {
first: {
name: "test",
offspring:[
{name: "test1", offspring:},
{name: "test2", offspring:[{name:"test21", offspring:}]},
{name: "test3", offspring:[
{name: "test31", offspring:}
]},
]
},
findInTree(name) {
let start = this.first; //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
} else {
let found = findName(set, name); // only return if you've found
if (found) return found // what you're looking for
}
}
}
}
return findName(start, name);
}
}
console.log(obj.findInTree("test31"))
Hmm... I think I kind of get it, but just for clarification, is there a reason why the return doesn't happen in the if statement "(set.name === name)"? My understanding was that if one of the recursions found a match, they would exit the loop and return the match using the "if/else". Is there a reason why this isn't the case? And also thank you for taking the time to review the code, I'll definitely look into it in detail for a better understanding.
– Elbert Bae
Nov 22 '18 at 3:46
So if you trace it though the tree above what happens is it callsfindName()
on the first offspring where the name doesn't exit. So that function doesn't returnstart
because the condition doesn't match, and there's no children so it never runs the loop. The result is that it returns undefined. And returning from a for loop stops the loop and returns from the function before you get a chance to loop to the one containing what you want.
– Mark Meyer
Nov 22 '18 at 3:51
Oh! I see it now, wow. Thanks so much for the explanation Mark! Placement of the return, I'll keep an eye out for that moving forward.
– Elbert Bae
Nov 22 '18 at 4:07
add a comment |
You only want to return from your loop if the recursion found what you're looking for. Otherwise you want to keep looping. You can test the result and decide whether to return:
let obj = {
first: {
name: "test",
offspring:[
{name: "test1", offspring:},
{name: "test2", offspring:[{name:"test21", offspring:}]},
{name: "test3", offspring:[
{name: "test31", offspring:}
]},
]
},
findInTree(name) {
let start = this.first; //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
} else {
let found = findName(set, name); // only return if you've found
if (found) return found // what you're looking for
}
}
}
}
return findName(start, name);
}
}
console.log(obj.findInTree("test31"))
Hmm... I think I kind of get it, but just for clarification, is there a reason why the return doesn't happen in the if statement "(set.name === name)"? My understanding was that if one of the recursions found a match, they would exit the loop and return the match using the "if/else". Is there a reason why this isn't the case? And also thank you for taking the time to review the code, I'll definitely look into it in detail for a better understanding.
– Elbert Bae
Nov 22 '18 at 3:46
So if you trace it though the tree above what happens is it callsfindName()
on the first offspring where the name doesn't exit. So that function doesn't returnstart
because the condition doesn't match, and there's no children so it never runs the loop. The result is that it returns undefined. And returning from a for loop stops the loop and returns from the function before you get a chance to loop to the one containing what you want.
– Mark Meyer
Nov 22 '18 at 3:51
Oh! I see it now, wow. Thanks so much for the explanation Mark! Placement of the return, I'll keep an eye out for that moving forward.
– Elbert Bae
Nov 22 '18 at 4:07
add a comment |
You only want to return from your loop if the recursion found what you're looking for. Otherwise you want to keep looping. You can test the result and decide whether to return:
let obj = {
first: {
name: "test",
offspring:[
{name: "test1", offspring:},
{name: "test2", offspring:[{name:"test21", offspring:}]},
{name: "test3", offspring:[
{name: "test31", offspring:}
]},
]
},
findInTree(name) {
let start = this.first; //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
} else {
let found = findName(set, name); // only return if you've found
if (found) return found // what you're looking for
}
}
}
}
return findName(start, name);
}
}
console.log(obj.findInTree("test31"))
You only want to return from your loop if the recursion found what you're looking for. Otherwise you want to keep looping. You can test the result and decide whether to return:
let obj = {
first: {
name: "test",
offspring:[
{name: "test1", offspring:},
{name: "test2", offspring:[{name:"test21", offspring:}]},
{name: "test3", offspring:[
{name: "test31", offspring:}
]},
]
},
findInTree(name) {
let start = this.first; //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
} else {
let found = findName(set, name); // only return if you've found
if (found) return found // what you're looking for
}
}
}
}
return findName(start, name);
}
}
console.log(obj.findInTree("test31"))
let obj = {
first: {
name: "test",
offspring:[
{name: "test1", offspring:},
{name: "test2", offspring:[{name:"test21", offspring:}]},
{name: "test3", offspring:[
{name: "test31", offspring:}
]},
]
},
findInTree(name) {
let start = this.first; //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
} else {
let found = findName(set, name); // only return if you've found
if (found) return found // what you're looking for
}
}
}
}
return findName(start, name);
}
}
console.log(obj.findInTree("test31"))
let obj = {
first: {
name: "test",
offspring:[
{name: "test1", offspring:},
{name: "test2", offspring:[{name:"test21", offspring:}]},
{name: "test3", offspring:[
{name: "test31", offspring:}
]},
]
},
findInTree(name) {
let start = this.first; //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
} else {
let found = findName(set, name); // only return if you've found
if (found) return found // what you're looking for
}
}
}
}
return findName(start, name);
}
}
console.log(obj.findInTree("test31"))
answered Nov 22 '18 at 3:31
Mark MeyerMark Meyer
40.7k33564
40.7k33564
Hmm... I think I kind of get it, but just for clarification, is there a reason why the return doesn't happen in the if statement "(set.name === name)"? My understanding was that if one of the recursions found a match, they would exit the loop and return the match using the "if/else". Is there a reason why this isn't the case? And also thank you for taking the time to review the code, I'll definitely look into it in detail for a better understanding.
– Elbert Bae
Nov 22 '18 at 3:46
So if you trace it though the tree above what happens is it callsfindName()
on the first offspring where the name doesn't exit. So that function doesn't returnstart
because the condition doesn't match, and there's no children so it never runs the loop. The result is that it returns undefined. And returning from a for loop stops the loop and returns from the function before you get a chance to loop to the one containing what you want.
– Mark Meyer
Nov 22 '18 at 3:51
Oh! I see it now, wow. Thanks so much for the explanation Mark! Placement of the return, I'll keep an eye out for that moving forward.
– Elbert Bae
Nov 22 '18 at 4:07
add a comment |
Hmm... I think I kind of get it, but just for clarification, is there a reason why the return doesn't happen in the if statement "(set.name === name)"? My understanding was that if one of the recursions found a match, they would exit the loop and return the match using the "if/else". Is there a reason why this isn't the case? And also thank you for taking the time to review the code, I'll definitely look into it in detail for a better understanding.
– Elbert Bae
Nov 22 '18 at 3:46
So if you trace it though the tree above what happens is it callsfindName()
on the first offspring where the name doesn't exit. So that function doesn't returnstart
because the condition doesn't match, and there's no children so it never runs the loop. The result is that it returns undefined. And returning from a for loop stops the loop and returns from the function before you get a chance to loop to the one containing what you want.
– Mark Meyer
Nov 22 '18 at 3:51
Oh! I see it now, wow. Thanks so much for the explanation Mark! Placement of the return, I'll keep an eye out for that moving forward.
– Elbert Bae
Nov 22 '18 at 4:07
Hmm... I think I kind of get it, but just for clarification, is there a reason why the return doesn't happen in the if statement "(set.name === name)"? My understanding was that if one of the recursions found a match, they would exit the loop and return the match using the "if/else". Is there a reason why this isn't the case? And also thank you for taking the time to review the code, I'll definitely look into it in detail for a better understanding.
– Elbert Bae
Nov 22 '18 at 3:46
Hmm... I think I kind of get it, but just for clarification, is there a reason why the return doesn't happen in the if statement "(set.name === name)"? My understanding was that if one of the recursions found a match, they would exit the loop and return the match using the "if/else". Is there a reason why this isn't the case? And also thank you for taking the time to review the code, I'll definitely look into it in detail for a better understanding.
– Elbert Bae
Nov 22 '18 at 3:46
So if you trace it though the tree above what happens is it calls
findName()
on the first offspring where the name doesn't exit. So that function doesn't return start
because the condition doesn't match, and there's no children so it never runs the loop. The result is that it returns undefined. And returning from a for loop stops the loop and returns from the function before you get a chance to loop to the one containing what you want.– Mark Meyer
Nov 22 '18 at 3:51
So if you trace it though the tree above what happens is it calls
findName()
on the first offspring where the name doesn't exit. So that function doesn't return start
because the condition doesn't match, and there's no children so it never runs the loop. The result is that it returns undefined. And returning from a for loop stops the loop and returns from the function before you get a chance to loop to the one containing what you want.– Mark Meyer
Nov 22 '18 at 3:51
Oh! I see it now, wow. Thanks so much for the explanation Mark! Placement of the return, I'll keep an eye out for that moving forward.
– Elbert Bae
Nov 22 '18 at 4:07
Oh! I see it now, wow. Thanks so much for the explanation Mark! Placement of the return, I'll keep an eye out for that moving forward.
– Elbert Bae
Nov 22 '18 at 4:07
add a comment |
Do you think this will work? Move the recursion call out of the for loop. only if the match is not found in the for loop, you call the function findName. If possible, can you put your code in jsfiddle or somewhere so that I can take a look.
findInTree(name) {
let start = this.first(); //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
}
}
return findName(set, name); //if the match is not found in the forloop, we call findname
}
}
return findName(start, name);
}
Just did a test run and unfortunately doesn't seem to work. Here's the jsfiddle link ! jsfiddle.net/4g6r5bz7
– Elbert Bae
Nov 22 '18 at 3:54
Most of your code looks good. I think you just need to add this to check whether match is undefined or not. let matchFound = findName(set, name); if(matchFound) return matchFound; I just saw that from the previous reply that you have already found the solution. Good to know.
– Bala
Nov 22 '18 at 4:23
Thank you for reviewing it! Yes, been looking into it to get a better understanding of how the matches take place in recursions, brushing up on how functions and loops react to returns!
– Elbert Bae
Nov 22 '18 at 4:34
add a comment |
Do you think this will work? Move the recursion call out of the for loop. only if the match is not found in the for loop, you call the function findName. If possible, can you put your code in jsfiddle or somewhere so that I can take a look.
findInTree(name) {
let start = this.first(); //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
}
}
return findName(set, name); //if the match is not found in the forloop, we call findname
}
}
return findName(start, name);
}
Just did a test run and unfortunately doesn't seem to work. Here's the jsfiddle link ! jsfiddle.net/4g6r5bz7
– Elbert Bae
Nov 22 '18 at 3:54
Most of your code looks good. I think you just need to add this to check whether match is undefined or not. let matchFound = findName(set, name); if(matchFound) return matchFound; I just saw that from the previous reply that you have already found the solution. Good to know.
– Bala
Nov 22 '18 at 4:23
Thank you for reviewing it! Yes, been looking into it to get a better understanding of how the matches take place in recursions, brushing up on how functions and loops react to returns!
– Elbert Bae
Nov 22 '18 at 4:34
add a comment |
Do you think this will work? Move the recursion call out of the for loop. only if the match is not found in the for loop, you call the function findName. If possible, can you put your code in jsfiddle or somewhere so that I can take a look.
findInTree(name) {
let start = this.first(); //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
}
}
return findName(set, name); //if the match is not found in the forloop, we call findname
}
}
return findName(start, name);
}
Do you think this will work? Move the recursion call out of the for loop. only if the match is not found in the for loop, you call the function findName. If possible, can you put your code in jsfiddle or somewhere so that I can take a look.
findInTree(name) {
let start = this.first(); //root object of the tree
function findName (start, name) {
if (start.name === name) {
return start;
} else {
for (let set of start.offspring) {
if (set.name === name) {
console.log(set); // returns the correct set!
console.log(set.name === name) //returns true;
return set;
}
}
return findName(set, name); //if the match is not found in the forloop, we call findname
}
}
return findName(start, name);
}
answered Nov 22 '18 at 3:36
BalaBala
954719
954719
Just did a test run and unfortunately doesn't seem to work. Here's the jsfiddle link ! jsfiddle.net/4g6r5bz7
– Elbert Bae
Nov 22 '18 at 3:54
Most of your code looks good. I think you just need to add this to check whether match is undefined or not. let matchFound = findName(set, name); if(matchFound) return matchFound; I just saw that from the previous reply that you have already found the solution. Good to know.
– Bala
Nov 22 '18 at 4:23
Thank you for reviewing it! Yes, been looking into it to get a better understanding of how the matches take place in recursions, brushing up on how functions and loops react to returns!
– Elbert Bae
Nov 22 '18 at 4:34
add a comment |
Just did a test run and unfortunately doesn't seem to work. Here's the jsfiddle link ! jsfiddle.net/4g6r5bz7
– Elbert Bae
Nov 22 '18 at 3:54
Most of your code looks good. I think you just need to add this to check whether match is undefined or not. let matchFound = findName(set, name); if(matchFound) return matchFound; I just saw that from the previous reply that you have already found the solution. Good to know.
– Bala
Nov 22 '18 at 4:23
Thank you for reviewing it! Yes, been looking into it to get a better understanding of how the matches take place in recursions, brushing up on how functions and loops react to returns!
– Elbert Bae
Nov 22 '18 at 4:34
Just did a test run and unfortunately doesn't seem to work. Here's the jsfiddle link ! jsfiddle.net/4g6r5bz7
– Elbert Bae
Nov 22 '18 at 3:54
Just did a test run and unfortunately doesn't seem to work. Here's the jsfiddle link ! jsfiddle.net/4g6r5bz7
– Elbert Bae
Nov 22 '18 at 3:54
Most of your code looks good. I think you just need to add this to check whether match is undefined or not. let matchFound = findName(set, name); if(matchFound) return matchFound; I just saw that from the previous reply that you have already found the solution. Good to know.
– Bala
Nov 22 '18 at 4:23
Most of your code looks good. I think you just need to add this to check whether match is undefined or not. let matchFound = findName(set, name); if(matchFound) return matchFound; I just saw that from the previous reply that you have already found the solution. Good to know.
– Bala
Nov 22 '18 at 4:23
Thank you for reviewing it! Yes, been looking into it to get a better understanding of how the matches take place in recursions, brushing up on how functions and loops react to returns!
– Elbert Bae
Nov 22 '18 at 4:34
Thank you for reviewing it! Yes, been looking into it to get a better understanding of how the matches take place in recursions, brushing up on how functions and loops react to returns!
– Elbert Bae
Nov 22 '18 at 4:34
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53423323%2frecursion-javascript-does-not-exit-recursion-out-of-if-statement%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown