将整数转换为字符串,然后使用递归相加
Convert integers to string and then adding using recursion
您好,我正在尝试解决函数 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));
您需要使用 "x" 而不是 "i"
如此变化
total += numbersToAdd[i];
到
total += numbersToAdd[x];
将解决一个问题。
另外输出应该是10而不是9,你的问题计算有误
您好,我正在尝试解决函数 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));
您需要使用 "x" 而不是 "i"
如此变化
total += numbersToAdd[i];
到
total += numbersToAdd[x];
将解决一个问题。
另外输出应该是10而不是9,你的问题计算有误