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

Tìm căn bậc hai của số không dùng Math.sqrt() trong JavaScript

Chúng ta cần viết một hàm JavaScript nhận vào một số nguyên dương làm đối số duy nhất. Hàm nên tìm và trả về căn bậc hai của số được cung cấp làm đầu vào.

Ví dụ

Dưới đây là mã nguồn:

const squareRoot = (num, precision = 0) => {    if (num <= 0) {       return 0;    };    let res = 1;    const deviation = 1 / (10 ** precision);    while (Math.abs(num - (res ** 2)) > deviation) {       res -= ((res ** 2) - num) / (2 * res);    };    return Math.round(res * (10 ** precision)) / (10 ** precision); }; console.log(squareRoot(16)); console.log(squareRoot(161, 3)); console.log(squareRoot(1611, 4));

Kết quả

Đầu ra trên console:

4 12.689 40.1373

Giải thích: Hàm sử dụng phương pháp Newton-Raphson để xấp xỉ căn bậc hai. Công thức lặp: x_{n+1} = x_n - (x_n² - a) / (2x_n) = (x_n + a/x_n) / 2. Tham số precision kiểm soát độ chính xác sau dấu phẩy.