javascript - javascript中的递归函数问题

标签 javascript recursion

我正在练习使用递归函数来解决一些简单的 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/

相关文章:

带有奇怪请求的 Java 递归

javascript - 无法读取未定义的属性 'Api' 来加载响应式数据表.js

javascript - 使用哪个事件处理程序来记录离开页面 - onunload 或 onbeforeunload?

javascript - 如何从异步调用返回响应?

javascript - 将平面对象数组转换为嵌套对象

c++ - 如何在编译时使用 C++ 模板存储递归函数的中间结果?

javascript - 使用 css() 更改自定义属性不起作用

Javascript在循环中隐藏对象

c - 在递归函数中使用 __FILE__ 和 __LINE__

javascript - 查找嵌套数组的所有可能组合