Javascript 递归函数的返回值为';未定义';
每当执行此代码段时,console.log before return将返回值为23的20倍的数组。 但是console.log(检查(用户,0,20));仅返回“未定义” 我做错了什么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
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
语句设置要返回的值,那么维护起来可能会更容易。为了不分散对实际问题的注意力,我尽可能简化了函数。谢谢。