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になるまで繰り返されます。
for ... ofを使用する場合、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));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加