function AdditivePersistence(num) {
var count = 0;
while (num.toString().length > 1) {
count++;
var num = calcVal(num);
}
return count;
function calcVal(str) {
var sum = 0;
var arr = str.toString().split("");
for (var i of arr) {
sum = sum + arr[i];
}
return parseInt(sum.toString());
}
}
console.log(AdditivePersistence(2233));
calcValue
函数返回数组的总和,while循环重复,直到返回的数字长度为1。
答案 0 :(得分:0)
当你使用...时,i
是数字而不是数字的索引。另外你需要解析数字。
sum = sum + parseInt(i, 10); // i is the number, not the index
由于您使用i
作为索引,因此calcVal()
的结果始终为长度为>的字符串。 2,这意味着你的情况下是一个无限循环。
固定代码:
function AdditivePersistence(num) {
var count = 0;
while (num.toString().length > 1) {
count++;
num = calcVal(num);
}
return count;
function calcVal(str) {
var sum = 0;
var arr = str.toString().split("");
for (var i of arr) {
sum = sum + parseInt(i, 10); // i is the number, not the index
}
return sum;
}
}
console.log(AdditivePersistence(2233));