我的JavaScript搜索递归循环有什么问题?

时间:2013-08-22 03:04:29

标签: javascript recursion

我似乎无法弄清楚为什么我的递归搜索不会递归。

你看到了什么问题吗?我在错误的地方有haystack[i]吗?因为我没有看到它。我试过在这个网站上看一些例子,但我不知道这么简单。

search = function(needle, haystack) {

    len = haystack.length;
    for (var i = 0; i < len; i++)
    {
        if (typeof haystack[i] == 'object') {
            search(needle, haystack[i])
        } else {
            if (needle == haystack[i]) {
                console.log('found');
                return;
            }
            console.log('value: ' + haystack[i])
        }
    }
}

var test = [[1], [2], [3,4], [5,6]]
search(4, test)

或者看小提琴@ http://jsfiddle.net/aniyishay/TBMmK/(打开控制台)

1 个答案:

答案 0 :(得分:3)

var前面缺少len,它应该是var len = haystack.length;,否则会被视为全局变量。

当haystack = [[1],[2],[3,4],[5,6]]然后len = 4但是再次调用search(4, [1])然后len = 1被激活然后当循环返回值len = 1而不是原始值4,因为它是一个全局变量。现在i = 2且len = 1所以循环存在