0
我一直在寻找用JavaScript编写的巴比伦平方根的算法,并发现这个工作的解决方案:巴比伦平方根算法 - 初始估计值
function sqrt(num) {
var accuracy = 0.000001;
function isPrecise(estimation) {
if (Math.abs(Math.pow(estimation, 2) - num) < accuracy) {
return true
} else {
return false
}
}
function improvePrecision(estimation) {
return (estimation + (num/estimation))/2;
}
function iteration(estimation) {
if(isPrecise(estimation)) {
return estimation;
} else {
return iteration(improvePrecision(estimation));
}
}
return iteration(num);
}
,但我看不出哪里是初始猜测(代码 - estimation
)值被定义。那么当第一次迭代没有猜测值时它是如何工作的?其实这个值应该等于num
的说法。
将函数参数作为第一个猜测输入。这是它的来电者。 – duffymo
对于'num'的合理数字范围,该实现看起来不错。但我敢打赌,它会给很差的结果或无限期地运行非常小的数字(1e-20),非常大的数字(1e20),零或负数。 –