请帮我写一个函数,用下面的公式计算正实数的平方根:
x i+1 = (1/2) * (xi + (A / x1)),
其中'A‘-输入实数。
在零迭代中,下一条语句已被采用x0 =A,误差应至少为10-6
输出
sqrt (2) = 1.414
sqrt (9) = 3
sqrt (25) = 5
发布于 2018-09-24 02:02:57
您也可以使用二分法-一种更通用的解决问题的方法:
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);
}
https://stackoverflow.com/questions/52468506
复制相似问题