เราต้องเขียนฟังก์ชันที่รับตัวเลขแล้วบวกหลักไปเรื่อยๆ จนได้ผลลัพธ์ไม่ใช่ตัวเลขหลักเดียว พอได้เลขหลักเดียวเราก็คืนมา
โค้ดสำหรับสิ่งนี้ค่อนข้างตรงไปตรงมา เราเขียนฟังก์ชันแบบเรียกซ้ำที่เพิ่มตัวเลขจนกระทั่งตัวเลขนั้นมากกว่า 9 หรือน้อยกว่า -9 (เราจะดูแลเครื่องหมายแยกกันเพื่อไม่ให้เราเขียนตรรกะซ้ำสอง)พี>
ตัวอย่าง
const sumRecursively = (n, isNegative = n < 0) => {
n = Math.abs(n);
if(n > 9){
return sumRecursively(parseInt(String(n).split("").reduce((acc,val) => {
return acc + +val;
}, 0)), isNegative);
}
return !isNegative ? n : n*-1;
};
console.log(sumRecursively(88));
console.log(sumRecursively(18));
console.log(sumRecursively(-345));
console.log(sumRecursively(6565)); ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็น -
7 9 -3 4