[英]Transform this iteration function to recursive
This is a function to display the sum of the input digits with iteration perspective:这是一个用迭代视角显示输入数字总和的函数:
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
I am wondering how we write this function in a recursive way?我想知道我们如何以递归方式编写此函数?
I have not tested it, but you can try the following without casting to string我还没有测试过,但是您可以尝试以下操作而无需转换为字符串
function sumOfDigits(number)
{
if (number === 0) {
return 0;
}
return (number % 10 + sumOfDigits(Math.floor(number / 10)));
}
Make sure that the input is indeed in number format确保输入确实是数字格式
Using the modulo operator, you can get the remainder (which in the case of a divison by 10, is the last number) and then add the next iteration.使用模运算符,您可以获得余数(在除以 10 的情况下,是最后一个数字),然后添加下一次迭代。
function sumOfDigits (n) { if (n === 0) return 0 return (n % 10 + sumOfDigits(Math.floor(n / 10))) } console.log(sumOfDigits(512))
If you want to see a more detailed explanation, checkhttps://www.geeksforgeeks.org/sum-digit-number-using-recursion/如果你想看更详细的解释,请查看https://www.geeksforgeeks.org/sum-digit-number-using-recursion/
Here you go干得好
function sumOfDigitsRecursive(number){
let strNumber = number.toString()
if(strNumber.length<=0)
return 0
return parseInt(strNumber[0])+sumOfDigitsRecursive(strNumber.slice(1,strNumber.length))
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.