Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การหารากที่สองของจำนวนไม่ติดลบโดยไม่ใช้ Math.sqrt() ใน JavaScript


ภาพรวม

เราต้องเขียนฟังก์ชันที่รับจำนวนเต็มไม่ติดลบและคำนวณหารากที่สอง สามารถปัดเศษทิ้งส่วนทศนิยมได้

เช่น สำหรับ 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