Additive Persistence คือจำนวนครั้งที่ต้องบวกตัวเลขแต่ละหลักซ้ำๆ จนได้ตัวเลข 1 หลัก
ตัวอย่าง
1679583 1+6+7+9+5+8+3 = 39 (1 ครั้ง) 3+9 = 12 (2 ครั้ง) 1+2 = 3 (3 ครั้ง) // Persistence = 3
ตัวอย่างโค้ด
const num = 1679583;
const sumDigit = (num, sum = 0) => {
if (num) {
return sumDigit(Math.floor(num / 10), sum + num % 10);
}
return sum;
};
const persistence = num => {
num = Math.abs(num);
let res = 0;
while (num > 9) {
num = sumDigit(num);
res++;
}
return res;
};
console.log(persistence(num));
การทำงาน
sumDigit- ฟังก์ชัน recursive บวกหลักทุกหลักpersistence- วนลูปจนกว่าจะเหลือ 1 หลัก นับจำนวนรอบ- ใช้
Math.abs()รองรับตัวเลขลบ
ผลลัพธ์
3
ข้อสนใจ: เลขที่มี persistence สูงสุดในฐาน 10 คือ 277777788888899 (persistence = 11)