给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。leetcode的各位相加问题,我的思路是将数字分割然后相加,递归,小于10的数字return出去相关代码 var addDigits = function(num) { let str = num+=''
let len = str.split('').length; let numTemp = 0
if(num < 10) { console.log(num)//2
return num
} else { for (let i =0; i<len;i++) {
numTemp += parseInt(str.split('')[i], 10)
}
addDigits(numTemp)
}
};
console.log(addDigits(38)//undefined你期待的结果是什么?实际看到的错误信息又是什么?正确答案应为2,实际上返回出来的是undefined,但是打印出来的也是2
2 回答
万千封印
TA贡献1891条经验 获得超3个赞
递归调用结果没有返回,肯定为undefined;修改为下面的:
var addDigits = function (num) { let str = num += ''; let len = str.split('').length; let numTemp = 0; if (num < 10) return num; for (let i = 0; i < len; i++) { numTemp += parseInt(str.split('')[i], 10); } return addDigits(numTemp); };
添加回答
举报
0/150
提交
取消