私は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'の実装はOKです。しかし、非常に小さな数字(1e-20)、非常に大きな数字(1e20)、ゼロ、または負の数については、結果が悪くなるか無期限に実行されると思います。 –