将整数转换为字符串,然后使用递归添加

时间:2018-02-23 23:45:22

标签: javascript arrays recursion int tostring

您好我正在尝试解决函数digital_root(n)的输入将添加数字的问题。我不确定我做错了什么。

function digital_root(n) {
  // ...
  //1. separate n into array of digits

  var nString = n.toString();

  //[ '1', '2', '3', '4' ]
  var numbersToAdd = [];

  var total = 0;

  for (var i = 0; i < nString.length; i++) {
    numbersToAdd.push(+nString.charAt(i));
  }
  // result is [ 1, 2, 3, 4 ]
  //2. add digits
  for (var x = 0; x < numbersToAdd.length; x++) {
    total += numbersToAdd[i];
    //expected outputs
    // total = 0 + numbersToAdd[0]--> 0+1--> total = 1
    // total = 1 + numbersToAdd[1]-->1+2--> total = 3
    // total = 3 + numbersToAdd[2]-->3+3--> total = 6
    // total = 6 + numbersToAdd[3]-->6+3--> total = 9
  }

  return total;

}

console.log(digital_root(1234));

1 个答案:

答案 0 :(得分:0)

您需要使用“x”而不是“i”

如此改变

total += numbersToAdd[i]; 

total += numbersToAdd[x];

将解决问题。

同样输出应该是10而不是9,你的问题中存在计算错误