首页 > 解决方案 > 递归没有正确运行?

问题描述

我正在练习递归,并试图用它来不断地在一个数字中添加单个数字,直到只剩下 1 个数字。

基本上,如果数字是84,它会变成8+4 = 12which 然后变成1 + 2 = 3

下面是我的尝试。不知道我错过了什么..

const weirdSum = (num) => {
  let result = 0;    
  const split = num.toString().split('');

  if(split.length > 1){
    for(let i=0;i<split.length;i++){
      result = result + (split[i]*1);
    }           
    weirdSum(result); // pass result as argument, which will be split.
  }

  return result; // return result if split.length is 1
}

标签: javascriptrecursion

解决方案


let weirdSum = num => {  
  const split = num.toString().split('');

  if(split.length > 1){
    const sum = split.reduce((acc, it) => parseInt(it) + acc, 0)        
    return weirdSum(sum);
  }

  return num;
}

console.log(weirdSum(84));
console.log(weirdSum(123456));


推荐阅读