เราต้องเขียนฟังก์ชันที่รับตัวเลขแล้วบวกหลักไปเรื่อยๆ จนได้ผลลัพธ์ไม่ใช่ตัวเลขหลักเดียว พอได้เลขหลักเดียวเราก็คืนมา
โค้ดสำหรับสิ่งนี้ค่อนข้างตรงไปตรงมา เราเขียนฟังก์ชันแบบเรียกซ้ำที่เพิ่มตัวเลขจนกระทั่งตัวเลขนั้นมากกว่า 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