递归函数的返回值是'undefined' [英] Return value of recursive function is 'undefined'
本文介绍了递归函数的返回值是'undefined'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
每当我执行此代码片段时,返回前的console.log会返回值为20的20倍的数组。
但是console.log(Check(users,0,20));只返回'undefined'。
Whenever I execute this snippet the console.log before return returns the array with 20 times the value 23. However console.log(Check(users, 0, 20)); returns only '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;
}
}
推荐答案
你忘了从进入recusrion的点返回结果。
You forgot to return a result from the point, where you entering recusrion.
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;
}
}
但返回值似乎没用,导致'你的功能改变初始数组。
But return value seems useless, cause' your function altering initial array as well.
这篇关于递归函数的返回值是'undefined'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文