Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tìm căn bậc hai không dùng hàm thư viện - JavaScript


Chúng ta cần viết hàm nhận vào số và tính căn bậc hai không dùng Math.sqrt().

Ví dụ

Dưới đây là đoạn code:

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); 
  } 
} 
// Hàm tìm căn bậc hai của n
const findSqrt = num => { 
  let i = 1; 
  const found = false; 
  while (!found){ 
    // Nếu n là số chính phương
    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));

Kết quả

Đoạn code sẽ in ra console:

5.744562149047852

Giải thích code

Lặp từ i = 1.

Nếu i * i = n, trả về i vì n là số chính phương. Ngược lại tìm i nhỏ nhất sao cho i * i > n.

Khi đó căn bậc hai nằm trong khoảng (i-1, i). Dùng thuật toán tìm kiếm nhị phân (Binary Search) để tìm căn bậc hai chính xác.