21

每当我执行此代码段时,console.log 在返回之前返回数组,其值为 23 的 20 倍。但是 console.log(Check(users, 0, 20)); 仅返回“未定义”。

我究竟做错了什么?

var users = [23, 23, 23, 23, 23, 23, 23, 23, 23, 23];
console.log(Check(users, 0, 20));

function Check(ids, counter, limit){
    ids.push(23);

    // Recursion
    if (counter+1 < limit){
        Check(ids, counter+1, limit);
    }
    else {
        console.log(ids);
        return ids;
    }
}
4

1 回答 1

40

您忘记从输入 recursion 的位置返回结果。

var users = [23, 23, 23, 23, 23, 23, 23, 23, 23, 23];
console.log(Check(users, 0, 20));

function Check(ids, counter, limit){
    ids.push(23);

    // Recursion
    if (counter+1 < limit){
        return Check(ids, counter+1, limit); // return here!
    }
    else {
        console.log(ids);
        return ids;
    }
} 

但是返回值似乎没用,因为你的函数也改变了初始数组。

于 2013-07-08T14:01:57.250 回答