Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การหาความทนทานเชิงบวก (Additive Persistence) ของตัวเลข - JavaScript

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));

การทำงาน

  1. sumDigit - ฟังก์ชัน recursive บวกหลักทุกหลัก
  2. persistence - วนลูปจนกว่าจะเหลือ 1 หลัก นับจำนวนรอบ
  3. ใช้ Math.abs() รองรับตัวเลขลบ

ผลลัพธ์

3

ข้อสนใจ: เลขที่มี persistence สูงสุดในฐาน 10 คือ 277777788888899 (persistence = 11)