2017-06-05 72 views
0

我需要小代码中的小帮助。该函数返回undefined,我想返回总和的console.log。该代码是在这里http://jsbin.com/jedigigigo/edit?js,console功能正在返回未定义

var addDigits = function a(num) { 
 
    var length = num.toString().length; 
 
    var value = num.toString(); 
 
    var sum = 0; 
 
    for (var i = 0; i < value.length; i++) { 
 
    sum += Number(value[i]); 
 
    } 
 
    if (sum > 9) { 
 
    a(sum); 
 
    } else { 
 
    console.log(sum); 
 
    return sum; 
 
    } 
 
}; 
 

 

 
console.log(addDigits(38));

回答

5

在if语句添加回报: -

/** 
* @param {number} num 
* @return {number} 
*/ 

var addDigits = function a(num) { 
 
    var length = num.toString().length; 
 
    var value = num.toString(); 
 
    var sum = 0; 
 
    for (var i = 0; i < value.length; i++) { 
 
    sum += Number(value[i]); 
 
    } 
 
    if (sum > 9) { 
 
    return a(sum); 
 
    } else { 
 
    console.log(sum); 
 
    return sum; 
 
    } 
 
}; 
 

 

 
console.log(addDigits(38));

+0

谢谢大家了! –

+0

欢迎....... –

4
if(sum>9) { 
    return a(sum); // You forgot to return a value from recursive call. 
} 

虽然代码看起来很奇怪:)

+0

谢谢! –

0

我编辑了你的代码。我不知道为什么在这里递归地调用sum。如果我理解它是正确的,那么你只是试图返回一个数字的数字总和(非负数)。我修改你的代码像下面

var addDigits = function a(num) { 
    var length=num.toString().length; 
    var value=num.toString(); 
    var sum=0; 
    for(var i=0;i<value.length;i++) { 
     sum+=Number(value[i]); 
    } 
    return sum; 
}; 
console.log(addDigits(23456)); 

我更新了你的bin也可以检查here

0
var addDigits = function a(num) { 
     var length=num.toString().length; 
     var value=num.toString(); 
     var sum=0; 
     for(var i=0;i<value.length;i++) { 
      sum+=Number(value[i]); 
     } 
     if(sum > 9) { 
      return a(sum); 
     } 
     else 
     { 
      return sum; 
     } 

    }; 

    console.log(addDigits(38));