Javascript 递归没有正常运行?

Javascript 递归没有正常运行?,javascript,recursion,Javascript,Recursion,我正在练习递归,并尝试使用它不断地在一个数字中添加各个数字,直到只剩下1个数字 基本上,如果这个数字是84,它变成8+4=12,然后变成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

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

基本上,如果这个数字是84,它变成8+4=12,然后变成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
}
设weirdSum=num=>{ const split=num.toString.split; 如果split.length>1{ const sum=split.reduceacc,it=>parseIntit+acc,0 返回奇数; } 返回num; } console.logweirdSum84; console.logweirdSum123456 设weirdSum=num=>{ const split=num.toString.split; 如果split.length>1{ const sum=split.reduceacc,it=>parseIntit+acc,0 返回奇数; } 返回num; } console.logweirdSum84; console.logweirdSum123456 常量weirdSum=num=>{ 设结果=0; const split=num.toString.split; 如果split.length>1{ forlet i=0;i 常量weirdSum=num=>{ 设结果=0; const split=num.toString.split; 如果split.length>1{
forlet i=0;i有两个错误,一个需要返回古怪的结果; 您正在返回的另一个结果是0,您应该返回num

常量weirdSum=num=>{ 设结果=0; const split=num.toString.split; 如果split.length>1{
forlet i=0;i有两个错误,一个需要返回古怪的结果; 您正在返回的另一个结果是0,您应该返回num

常量weirdSum=num=>{ 设结果=0; const split=num.toString.split; 如果split.length>1{
forlet i=0;i此函数不是匿名函数,但它解决了您的问题

function weirdSum(num) {

    if(parseInt(num/10) == 0) {
        return num;
    }

    var num1 = 0;

    while(num != 0) {
        var d = parseInt(num%10);
        num1=num1+d;            
        num=parseInt(num/10);
    }

    return weirdSum(num1);

}
它是如何工作的

任何一位数字除以10得到0,因为需要对int进行商解析,当满足第一个if条件时,函数存在。 在while循环中,我从最后一个数字开始提取数字,当我们将一个数字除以10时,余数始终与最后一个数字相同,然后我们将其添加到新的num num num1中。 在while循环的最后一步中,我们通过将最后一个数字除以10,并用qoaClient重新绘制旧的num1,来缩短该数字。
此函数不是匿名函数,但它解决了您的问题

function weirdSum(num) {

    if(parseInt(num/10) == 0) {
        return num;
    }

    var num1 = 0;

    while(num != 0) {
        var d = parseInt(num%10);
        num1=num1+d;            
        num=parseInt(num/10);
    }

    return weirdSum(num1);

}
它是如何工作的

任何一位数字除以10得到0,因为需要对int进行商解析,当满足第一个if条件时,函数存在。 在while循环中,我从最后一个数字开始提取数字,当我们将一个数字除以10时,余数始终与最后一个数字相同,然后我们将其添加到新的num num num1中。 在while循环的最后一步中,我们通过将最后一个数字除以10,并用qoaClient重新绘制旧的num1,来缩短该数字。 常量weirdSum=num=>{ //算出总数 const sum=[…num+]; //如有必要,请重复 返回和<10?和:怪和; } 控制台logweirdSum84; 常量weirdSum=num=>{ //算出总数 const sum=[…num+]; //如有必要,请重复 返回和<10?和:怪和; }
console.logweirdSum84;应该是return-weirdSumresult;?我尝试了return,但它也不起作用。关于第二条注释,这是真的,但是如果它的2249是17,那么再次运行该函数,直到得到8。**第二条注释被删除..应该是return-weirdSumresult;?我尝试了return,但它也不起作用。关于对于第二条注释,这是正确的,但是如果它的2249是17,那么再次运行该函数,直到得到8。**第二条注释被删除。它极大地改进了答案,使其包含一些关于解决方案工作原因的解释性文本。它极大地改进了答案,使其包含一些关于解决方案工作原因的解释性文本。是的,这种情况经常发生,w我们都是人。有时我的思维停留在简单的条件下,有时解决复杂的问题。这是一个自然的人。是的,这总是发生,我们都是人。有时我的思维停留在简单的条件下,有时解决复杂的问题。这是一个自然的人。这里有很多很好的答案,但我选择这个作为答案,因为它仍然存在我使用我的代码,这有助于我以我现在学习的速度学习。谢谢这里有很多很好的答案,但我选择这个作为答案,因为它仍然使用我的代码;这有助于我以我现在学习的速度学习。谢谢