我期待着成功的价值'但我未定义。不明白为什么。
var recursion = function(n) {
if (n == 0) {
console.log('yup');
return 'success';
}
console.log(n)
recursion(n - 1);
}
var x = recursion(10);
console.log(x);

答案 0 :(得分:3)
您需要return recursion(n - 1);
答案 1 :(得分:2)
如果条件不满足,则在代码中缺少return语句。
var recursion = function(n) {
if (n == 0) {
console.log('yup');
return 'success';
}
console.log(n)
return recursion(n - 1);
//--^--
}
var x = recursion(10);
console.log(x);
答案 2 :(得分:0)
如前所述,您需要return recursion(n - 1);
有趣的是......这很难缠绕我的脑袋。当我返回函数时,我期望函数中断返回一个值,不再执行...
但是在n !== 0
的情况下,你的函数不返回任何东西。
递归只是一个简单的函数调用,没什么特别的。它不像break
循环。 return
语句不会通过整个调用堆栈刷新结果,只是因为函数调用了自身。它只返回其直接调用者。在你的情况下,最顶层的函数调用recursion(10)
是一个不返回任何内容的函数,因此undefined
。
答案 3 :(得分:-1)
更改为:
return recursion(n-1)