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

การหาค่ารากที่สองโดยไม่ใช้ Math.sqrt() ใน JavaScript

คำอธิบาย

เขียนฟังก์ชันคำนวณรากที่สองของตัวเลขโดยไม่ใช้ Math.sqrt() ใช้วิธี Binary Search

ตัวอย่างโค้ด

const square = (n, i, j) => {
  let mid = (i + j) / 2;
  let mul = mid * mid;
  if ((mul === n) || (Math.abs(mul - n) < 0.00001)) {
    return mid;
  } else if (mul < n) {
    return square(n, mid, j);
  } else {
    return square(n, i, mid);
  }
};

const findSqrt = num => {
  let i = 1;
  while (true) {
    if (i * i === num) {
      return i;
    } else if (i * i > num) {
      let res = square(num, i - 1, i);
      return res;
    }
    i++;
  }
};

console.log(findSqrt(33));

การทำงาน

  1. หา i ที่ i*i มากกว่า num
  2. รากที่สองอยู่ระหว่าง i-1 และ i
  3. ใช้ Binary Search หาค่าที่แม่นยำ

ผลลัพธ์

5.744562149047852