Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm căn bậc hai của một số mà không cần sử dụng các hàm thư viện - JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một số và tính căn bậc hai của nó mà không sử dụng hàm Math.sqrt ().

Ví dụ

Sau đây là mã -

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);
   }
}
// Function to find the square root of n
const findSqrt = num => {
   let i = 1;
   const found = false;
   while (!found){
      // If n is a perfect square
      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));

Đầu ra

Điều này sẽ tạo ra kết quả sau trong bảng điều khiển -

5.744562149047852

Hiểu mã

Chúng tôi đã lặp lại từ i =1.

Nếu i * i =n, thì chúng ta trả về i vì n là một bình phương hoàn hảo có căn bậc hai là i., Nếu không, chúng ta tìm i nhỏ nhất mà i * i chỉ lớn hơn n.

Bây giờ chúng ta biết căn bậc hai của n nằm trong khoảng i - 1 và i. Và sau đó chúng tôi sử dụng thuật toán Tìm kiếm nhị phân để tìm căn bậc hai.