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

การตรวจสอบ Tidy Number - JavaScript

Tidy Number คือตัวเลขที่ตัวเลขแต่ละหลักเรียงลำดับจากน้อยไปมาก (non-decreasing order) เช่น 123, 489, 234557

ตัวอย่าง

489     // tidy number
234557  // tidy number
34535   // ไม่ใช่ tidy number (5 > 3)

ตัวอย่างโค้ด (Recursive)

const num = 234789;

const isTidy = (num, last = 10) => {
  if (num) {
    const currentDigit = num % 10;
    // ตรวจสอบว่าหลักปัจจุบันไม่เกินหลักก่อนหน้า (อ่านจากขวาไปซ้าย)
    if (currentDigit > last) {
      return false;
    }
    // เรียกซ้ำด้วยตัวเลขที่ตัดหลักสุดท้ายออก และอัปเดต last
    return isTidy(Math.floor(num / 10), currentDigit);
  }
  return true;
};

console.log(isTidy(num)); // true

หลักการทำงาน

  • อ่านตัวเลขจากหลักหน่วยขึ้นไป (ขวาไปซ้าย)
  • ตัวแปร last เก็บค่าหลักก่อนหน้า (เริ่มต้นที่ 10 เนื่องจากหลักสูงสุดคือ 9)
  • ถ้าหลักปัจจุบันมากกว่า last แสดงว่าไม่เรียงลำดับ → false
  • เรียกฟังก์ชันซ้ำจนกว่าจะหมดตัวเลข

ผลลัพธ์

true

หมายเหตุ: วิธีแบบ iterative ก็ทำได้เช่นกัน โดยแปลงเป็นสตริงแล้วเปรียบเทียบตัวอักษรแต่ละคู่