เราต้องเขียนฟังก์ชัน JavaScript ที่รับตัวเลขและบวกหลักของตัวเลขซ้ำๆ จนกลายเป็นตัวเลขหลักเดียว
เราจะแก้ปัญหานี้ด้วยสองวิธี:
วิธี 1: ใช้ลูป (Loops)
วิธีนี้ใช้ while loop เพื่อบวกหลักของตัวเลขซ้ำๆ แบบ recursive
ตัวอย่าง
const num = 123456;
const addDigits = (num = 1) => {
let sum = num;
while(sum % 10 !== sum){
let sum1 = 0;
while(sum > 0){
sum1 += sum % 10;
sum = Math.floor(sum / 10);
}
sum = sum1;
};
return sum;
};
console.log(addDigits(num));
วิธี 2: ใช้วิธีคงที่ (O(1) time complexity)
วิธีนี้ใช้สูตร Congruence ของคณิตศาสตร์ ผู้อ่านควรศึกษาสูตรนี้เพื่อเข้าใจวิธีแก้ปัญหานี้ได้ดียิ่งขึ้น
ตัวอย่าง
const num = 123456;
const addDigits = (num = 1) => {
let predicate = (num - 1) % 9;
return ++predicate;
};
console.log(addDigits(num));
ผลลัพธ์
ผลลัพธ์ในคอนโซลสำหรับทั้งสองวิธีจะเป็นดังนี้:
3