递归函数的返回值是'undefined'

时间:2013-07-08 14:00:00

标签: javascript recursion return

每当我执行此代码片段时,返回前的console.log会返回值为23的20倍的数组。 但是console.log(Check(users,0,20));仅返回'undefined'。

我做错了什么?

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;
    }
}

1 个答案:

答案 0 :(得分:31)

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

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;
    }
} 

但是返回值似乎没用,导致'你的函数改变初始数组。