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

Hàm căn bậc hai không sử dụng Math.sqrt () trong 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 ().

Do đó, hãy viết mã cho chức năng này -

Ví dụ

Mã cho điều này sẽ là -

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));

Hiểu mã

Chúng tôi lặp lại từ i =1. Nếu i * i =n, thì chúng tôi trả về i vì n là một hình vuông hoàn hảo có căn bậc hai là I, nếu không, chúng tôi 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.

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

5.744562149047852