ภาพรวม
เราต้องเขียนฟังก์ชันที่รับจำนวนเต็มไม่ติดลบและคำนวณหารากที่สอง สามารถปัดเศษทิ้งส่วนทศนิยมได้
เช่น สำหรับ 15 ไม่ต้องคืนค่าที่แม่นยำ แค่คืนจำนวนเต็มที่ใกล้ที่สุดและน้อยกว่า คือ 3
ใช้ Binary Search Algorithm เพื่อหาค่ารากที่สอง
ตัวอย่างโค้ด
const squareRoot = (num = 1) => {
let l = 0;
let r = num;
while(l <= r) {
const mid = Math.floor((l + r) / 2);
if(mid ** 2 === num) {
return mid;
} else if(mid ** 2 > num) {
r = mid - 1;
} else {
l = mid + 1;
}
}
return r;
};
console.log(squareRoot(4));
console.log(squareRoot(729));
console.log(squareRoot(15));
console.log(squareRoot(54435));
ผลลัพธ์ในคอนโซล
2 27 3 233