我需要一个小代码的小帮助。该函数返回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));
&#13;
答案 0 :(得分:5)
在if语句中添加return: -
/**
* @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));
&#13;
答案 1 :(得分:4)
if(sum>9) {
return a(sum); // You forgot to return a value from recursive call.
}
虽然代码看起来很奇怪:)
答案 2 :(得分: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]);
}
return sum;
};
console.log(addDigits(23456));
我更新了您的垃圾箱,您也可以查看here
答案 3 :(得分: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));