javascript中的递归函数问题

时间:2014-10-27 20:54:14

标签: 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语句。

1 个答案:

答案 0 :(得分:2)

当您递归时,您需要在展开时返回递归调用返回的值。

因此,在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'));