0

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

你看到有什么问题吗?我有一个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/(打开控制台)

4

1 回答 1

3

var前面少了len,应该是var len = haystack.length;不然被当成全局变量了。

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

于 2013-08-22T03:10:43.243 回答