返回的JavaScript递归函数未定义

返回的JavaScript递归函数未定义,javascript,Javascript,我期待着“成功”的价值,但我越来越不确定了。我不明白为什么 var递归=函数(n){ 如果(n==0){ console.log('yup'); 回归"成功",; } console.log(n) 递归(n-1); } var x=递归(10); 控制台日志(x)您需要返回递归(n-1)您需要返回递归(n-1)如果条件不满足,则代码中缺少返回语句 var递归=函数(n){ 如果(n==0){ console.log('yup'); 回归"成功",; } console.log(n) 返回递归

我期待着“成功”的价值,但我越来越不确定了。我不明白为什么

var递归=函数(n){
如果(n==0){
console.log('yup');
回归"成功",;
}
console.log(n)
递归(n-1);
}
var x=递归(10);

控制台日志(x)您需要
返回递归(n-1)

您需要
返回递归(n-1)

如果条件不满足,则代码中缺少返回语句

var递归=函数(n){
如果(n==0){
console.log('yup');
回归"成功",;
}
console.log(n)
返回递归(n-1);
//--^--
}
var x=递归(10);

控制台日志(x)当if条件不满足时,代码中缺少返回语句

var递归=函数(n){
如果(n==0){
console.log('yup');
回归"成功",;
}
console.log(n)
返回递归(n-1);
//--^--
}
var x=递归(10);
控制台日志(x)更改为:

return recursion(n-1)
改为:

return recursion(n-1)

如前所述,您需要
返回递归(n-1)


有趣的。。。我很难把头绕起来。当我返回函数时,我希望函数中断并返回一个值,不再执行

但是在
n!==0
函数不返回任何内容


递归只是一个普通的函数调用,没有什么特别的。这不像
break
ing循环。
return
语句不会在整个调用堆栈中刷新结果,只是因为函数调用了自身。它只返回其直接调用方。在您的例子中,最顶层的函数调用
递归(10)
不返回任何内容,因此
未定义的

正如前面提到的,您需要
返回递归(n-1)


有趣的。。。这让我很难理解。当我返回函数时,我希望函数中断并返回一个值,不再执行

但是在
n!==0
函数不返回任何内容


递归只是一个普通的函数调用,没有什么特别的。这不像
break
ing循环。
return
语句不会在整个调用堆栈中刷新结果,只是因为函数调用了自身。它只返回其直接调用方。在您的例子中,最顶层的函数调用
递归(10)
不返回任何内容,因此
未定义的

返回递归(n-1)有趣的。。。这让我很难理解。当我返回函数时,我希望函数中断并返回一个不再执行的值…
返回递归(n-1)有趣的。。。这让我很难理解。当我返回函数时,我希望函数中断并返回一个值,不再执行。。。