我正在练习使用递归函数来解决一些简单的 javascript 问题。
我遇到了以下代码的问题,
var locate = function(arr,value){
for (var i=0; i <arr.length; i++) {
if(typeof arr[i]=== "string") {
console.log("string is string");
if(arr[i]=== value) {
console.log("This should be true");
return true;
}
}
else {
locate(arr[i], value);
}
}
}
console.log(locate(['d', 'a',['e', 'g']], 'e'));
我无法让这个程序返回 true。它到达代码的正确部分,因为它打印了上面的语句。
如有任何帮助,我们将不胜感激。几个小时以来,我一直在为此苦思冥想。
Edit-@Matt Burland 指出调用递归时需要包含 return 语句这一事实。
最佳答案
当您递归时,您需要返回在展开时递归调用返回的值。
因此在您的 else
子句中,您需要:
return locate(arr[i], value);
var locate = function(arr,value){
for (var i=0; i <arr.length; i++) {
if(typeof arr[i]=== "string") {
console.log("string is string");
if(arr[i]=== value) {
console.log("This should be true");
return true;
}
}
else {
return locate(arr[i], value);
}
}
}
alert(locate(['d', 'a',['e', 'g']], 'e'));
关于javascript - javascript中的递归函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26596658/