【问题标题】:why recursion is returning undefined in javascript? [duplicate]为什么递归在javascript中返回未定义? [复制]
【发布时间】:2018-10-17 10:25:24
【问题描述】:

我正在使用递归来反转数字。在终止条件下,我正在返回结果。但它返回“未定义”。 if 内的控制台显示正确的输出。

//反转数字

var result= "";
var reverse = function(x) {

if(x == 0){
    console.log("result",result);
    return result;
}else{
    var lastDigit = x % 10; 
  result += lastDigit;
  x = Math.floor(x/10);
  reverse(x);
}
};

console.log(reverse(73254));

【问题讨论】:

  • 因为你不在递归行上return
  • 返回反向(x)

标签: javascript recursion


【解决方案1】:

如果您没有从带有return 的函数返回任何内容,那么默认情况下会返回undefined。您必须从else 返回函数,例如:

return reverse(x);

工作代码示例:

var result= "";
var reverse = function(x) {

  if(x == 0){
      console.log("result",result);
      return result;
  }else{
      var lastDigit = x % 10; 
      result += lastDigit;
      x = Math.floor(x/10);
      return reverse(x);
    }
};

console.log(reverse(73254));

【讨论】:

    【解决方案2】:

    这是因为您没有返回对函数 itself 的调用,默认情况下会返回 undefined

    解决方案是返回来自reverse(x)的结果。

    另外,你可以像这样简化你的函数:

    var reverse = function(x) {
        if(x < 10)
           return x;
        return x % 10 + "" + reverse(Math.floor(x/10));
    };
    
    console.log(reverse(73254));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-09
      • 2018-07-11
      • 2021-03-23
      • 1970-01-01
      • 2019-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多