返回的JavaScript递归函数未定义

时间:2017-01-21 17:04:47

标签: javascript

我期待着成功的价值'但我未定义。不明白为什么。



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);




4 个答案:

答案 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)
相关问题