今天在写一个算法题时使用了递归,但是在打印函数调用结果时一直都是undefined,检查各地方都没有发现问题,最后通过查阅相关资料,发现了问题所在
function fn(n) {
n = n + 1;
if (n > 10) {
return n;
}
// 入口
fn(n);
}
console.log(fn(0));
以上代码的打印结果是undefined,这令我感到很疑惑,后来查阅相关资料,发现在递归入口处,也是需要加上return的
function fn(n) {
n = n + 1;
if (n > 10) {
return n;
}
// 入口
return fn(n);
}
console.log(fn(0)); // 11
这样的打印结果就是正常的
原因:我们在递归入口处调用函数时,如果不使用return,那递归内部函数的值会一直卡在递归入口函数调用这里永远无法返回到外层去。