为什么递归在javascript中返回undefined?

时间:2018-05-07 14:59:09

标签: javascript recursion

我正在使用递归来反转这个数字。在终止条件下,我将返回结果。但它正在返回“未定义”。 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));

2 个答案:

答案 0 :(得分: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));

答案 1 :(得分:1)

这是因为你没有回复函数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));
&#13;
&#13;
&#13;