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