此功能可从迭代角度显示输入数字的总和:
function sumOfDigits(number) {
let strNumber = number.toString()
let output = 0;
for(i=0;i<strNumber.length;i++){
let tmp = parseInt(strNumber[i])
output = output + tmp
}
return output
}
// TEST CASES
console.log(sumOfDigits(512)); // 8
console.log(sumOfDigits(1542)); // 12
console.log(sumOfDigits(5)); // 5
console.log(sumOfDigits(21)); // 3
console.log(sumOfDigits(11111)); // 5
我想知道我们如何以递归方式编写此函数吗?
答案 0 :(得分:2)
我尚未对其进行测试,但是您可以尝试以下操作而无需转换为字符串
function sumOfDigits(number)
{
if (number === 0) {
return 0;
}
return (number % 10 + sumOfDigits(Math.floor(number / 10)));
}
请确保输入确实采用数字格式
答案 1 :(得分:2)
使用取模运算符,可以得到余数(在除以10的情况下是最后一个数字),然后添加下一个迭代。
function sumOfDigits (n) {
if (n === 0) return 0
return (n % 10 + sumOfDigits(Math.floor(n / 10)))
}
console.log(sumOfDigits(512))
如果您想查看更详细的说明,请选中https://www.geeksforgeeks.org/sum-digit-number-using-recursion/
答案 2 :(得分:1)
你在这里
function sumOfDigitsRecursive(number){
let strNumber = number.toString()
if(strNumber.length<=0)
return 0
return parseInt(strNumber[0])+sumOfDigitsRecursive(strNumber.slice(1,strNumber.length))
}