Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 递归函数的返回值为';未定义';_Javascript_Recursion_Return - Fatal编程技术网

Javascript 递归函数的返回值为';未定义';

Javascript 递归函数的返回值为';未定义';,javascript,recursion,return,Javascript,Recursion,Return,每当执行此代码段时,console.log before return将返回值为23的20倍的数组。 但是console.log(检查(用户,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); // Recu

每当执行此代码段时,console.log before return将返回值为23的20倍的数组。 但是console.log(检查(用户,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;
    }
}
var用户=[23,23,23,23,23,23,23,23,23,23,23,23];
日志(检查(用户,0,20));
功能检查(ID、计数器、限制){
id.push(23);
//递归
如果(计数器+1<极限){
检查(ID、计数器+1、限制);
}
否则{
控制台日志(ids);
返回ID;
}
}

您忘记了从输入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;
    }
} 
var用户=[23,23,23,23,23,23,23,23,23,23,23,23];
日志(检查(用户,0,20));
功能检查(ID、计数器、限制){
id.push(23);
//递归
如果(计数器+1<极限){
返回检查(ID,计数器+1,限制);//返回这里!
}
否则{
控制台日志(ids);
返回ID;
}
} 

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

if块中的No
return
语句表示
未定义。如果在函数末尾放一条
return
语句,并根据
if
语句设置要返回的值,那么维护起来可能会更容易。为了不分散对实际问题的注意力,我尽可能简化了函数。谢谢。