检查数字和Javascript-递归

检查数字和Javascript-递归,javascript,Javascript,正在寻找递归中的Javascript解决方案,以获取数字中所有数字的总和,直到得到一位数为止 例如,数字为55555时,所有数字之和为25。因为这不是一个单位数,所以将2和5相加,结果是7 我尝试了以下基于算法的解决方案 function getSum(n) { let sum = 0; while(n > 0 || sum > 9) { if(n == 0) { n = sum; sum = 0; }

正在寻找递归中的Javascript解决方案,以获取数字中所有数字的总和,直到得到一位数为止

例如,数字为55555时,所有数字之和为25。因为这不是一个单位数,所以将2和5相加,结果是7

我尝试了以下基于算法的解决方案

function getSum(n) {
let sum = 0; 
 while(n > 0 || sum > 9) 
  { 
    if(n == 0) 
    { 
        n = sum; 
        sum = 0; 
    } 
    sum += n % 10; 
    n /= 10; 
  } 
  return sum; 
 }

 console.log(getSum("55555"));

这将是一种工作,但我几乎肯定有一个美丽的单线解决方案,我只是还没有看到

函数singleDigitSumstr{ str=[…str].reduceAc,c=>{returnnumberc+acc},0 而str.toString.length>1{ str=singleDigitSumstr.toString; } 返回str } console.logsingleDigitSum55555 函数checSumOfDigitnum,和=0{ 如果num.length==1&&sum.length!==1{ 返回数字总和+Numbernum+的校验,0; }如果num.length==1,则为else{ 返回Numbersum+Numbernum; } num=num.split 总和=Numbersum+Numbernum.pop; 返回checSumOfDigitnum.join,总和+ } console.logchecSumOfDigit567; console.logchecSumOfDigit123;
console.LogchecsumofDigit5555 如果你需要递归,试试这个

function CheckDigitSum(number) {

  let nums = number.split('');
  if (nums.length > 1) {
    let sum = 0;
    for (let i = 0; i < nums.length; i++) {
      sum += Number(nums[i]);
    }
    return CheckDigitSum(sum.toString());    
  } else {
    return parseInt(nums[0], 10);
  }
}
给你:

function createCheckDigit(num) {
  var output = Array.from(num.toString());
  var sum = 0;
  if (Array.isArray(output) && output.length) {
  for ( i=0; i < output.length; i++){
     sum = sum + parseInt(output[i]);
  }      
  if ((sum/10) >= 1){
    sum = createCheckDigit(sum);      
  }
 }
 return sum;
}

这可以通过递归函数进行计算

函数createCheckDigitmembershipId{ //在这里编写代码。 ifmembershipId.length>1{ var dgts=membershipId.split; var总和=0; dgts.forEachdgt=>{ 总和+=Numberdgt; }; //console.log'Loop 1'; 返回createCheckDigitsum+; } 否则{ //控制台。登录“退出循环1”; 返回编号membershipid; } }
console.logcreateCheckDigit5555;我在这里发现了同样的问题,它不是一个纯粹的递归,你们在这里使用的是另一个函数reduce。