如何在不使用 Javascript 中的库和内置方法的情况下计算平方根?

How to calculate the square root without using library and built-in methods in Javascript?

请帮我写一个函数,用公式计算正实数的平方根:

x i+1 = (1/2) * (xi + (A / x1)),

其中 'A' - 输入实数。

在零迭代中,下一个语句已被执行 x0 = A 误差至少应为 10-6

输出

sqrt (2) = 1.414
sqrt (9) = 3
sqrt (25) = 5

你可以取 xi (x) 和 xi + 1 (x1) 并检查值是否相等。然后结束系列和 return 该值。

开始时,您需要一个合适的值,例如给定值的一半。

function sqrt(a) {
    var x,
        x1 = a / 2;
        
    do {
        x = x1;
        x1 = (x + (a / x)) / 2;
    } while (x !== x1);
    return x;
}

console.log(sqrt (2)); // 1.414
console.log(sqrt (9)); // 3
console.log(sqrt (25)); // 5

您还可以使用二分法——一种更通用的求解问题的方法:

var sqrt = function(n) {
    if (n<0) {
        throw "are you kidding?! we are REAL here.";
    }
    if (n === 0) {
        return 0;
    }
    var bisect = function(l,r) {
        var avg = (l+r)/2;
        if (r-l<0.00000001) {
            return (l+r)/2;
        }
        if (avg*avg > n) {
            return bisect(l, avg);
        } else if (avg*avg < n) {
            return bisect(avg, r);
        }
    }
    return bisect(0, n < 1 ? 1 : n);
}