转换为递归javascript

时间:2017-07-16 17:50:59

标签: javascript recursion



function add(num) {
var a = num.toString().split('')
var b = 0;
for(i=0;i<a.length;i++){
  b += Number(a[i])
}
  if(b.toString().split('').length == 1){
    return b
  }
  else{return add(b)}
}
document.write(add(73)+'<br>'); //7+3=10 | 1+0=1
document.write(add(9980)); //9+9+8+0=26 | 2+6=8
&#13;
&#13;
&#13;

请帮助我,我有一个代码,但我想递归这个代码,但我被卡住了...感谢您的回复

2 个答案:

答案 0 :(得分:1)

虽然您已经有了递归,但您可以使用Array#reduce对数字求和并检查值而不是字符串来调用递归。

function add(num) {
    var s = num.toString().split('').reduce(function (a, b) { return a + +b; }, 0);
    return s > 9 ? add(s) : s;
}

console.log(add(73));
console.log(add(9980));

答案 1 :(得分:-1)

&#13;
&#13;
function add(num) {
  if(num < 10) { 
    return num;
  }
  var sum = 0;
  while(num !== 0) {
    sum += (num%10);
    num = parseInt(num/10);
  }
  return add(sum);
}
document.write(add(73)+'<br>'); //7+3=10 | 1+0=1
document.write(add(9980)); //9+9+8+0=26 | 2+6=8
&#13;
&#13;
&#13;