简体   繁体   English

将此迭代函数转换为递归

[英]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.

相关问题 将递归函数转换为JavaScript中的迭代 - Convert a recursive function to an iteration in javascript 将递归函数转换为递归箭头函数 - Transform recursive function to recursive arrow function 如何将此递归函数转换为迭代函数? - How to transform this recursive function into an iterative one? 如何将递归 function 的每次迭代返回到另一个 function - How to return every iteration of a recursive function into another function 如何将同步和异步递归函数转换为JavaScript中的迭代 - How to convert sync and async recursive function to iteration in JavaScript JavaScript递归函数可将父/子记录转换为嵌套数组 - JavaScript recursive function to transform parent/child records into a nested array 一般来说,是否有可能将递归 function 转换为在 JavaScript 中使用手动堆栈的一个? - Is it possible, in general, to transform a recursive function in one that uses a manual stack in JavaScript? 更正错误或将代码转换为递归函数以求矩阵 - Correct error or transform code to recursive function to evaluate matrix 如何暂停递归JavaScript函数? 函数使用setInterval()延迟每次迭代 - How to pause recursive JavaScript function? Function uses setInterval() to delay each iteration 使用递归转换对象数据 - Transform object data with recursive
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM