ฟังก์ชันแบบเรียกซ้ำ (recursive) เพื่อหาตัวเลขหลัก (digit) ที่มีค่ามากที่สุดในตัวเลขที่กำหนด
ตัวอย่าง
// Input: 45654356 // Output: 6
ตัวอย่างโค้ด
const num = 45654356;
const greatestDigit = (num = 0, greatest = 0) => {
if (num) {
// หาค่ามากที่สุดระหว่างหลักปัจจุบันกับค่าสูงสุดที่พบจนถึงตอนนี้
const max = Math.max(num % 10, greatest);
// เรียกซ้ำด้วยตัวเลขที่ตัดหลักสุดท้ายออก และค่าสูงสุดใหม่
return greatestDigit(Math.floor(num / 10), max);
}
return greatest;
};
console.log(greatestDigit(num));
หลักการทำงาน
num % 10- ดึงหลักหน่วย (หลักสุดท้าย)Math.floor(num / 10)- ตัดหลักหน่วยออกMath.max()- เปรียบเทียบหาค่ามากกว่า- พารามิเตอร์
greatestสะสมค่าสูงสุดระหว่างการเรียกซ้ำ
ผลลัพธ์
6
ข้อดีของ Recursion: โค้ดกระชับ อ่านง่าย และจัดการสถานะผ่านพารามิเตอร์ได้โดยไม่ต้องใช้ตัวแปรภายนอก