次のコードの問題点:
コーヒースクリプト:
sqrt = (n) ->
small = 0.01
lo = 0
hi = (n+1)/2
while hi > lo
mid = (lo+hi)/2
diff = Math.pow(mid, 2) - n
sign = (diff > 0) ? 1 : 0
if Math.abs(diff) < small
return mid
else
switch sign
when 1
hi = mid
when 0
lo = mid
console.log (sqrt 33)
Javascript:
// Generated by CoffeeScript 1.3.3
(function() {
var sqrt;
sqrt = function(n) {
var diff, hi, lo, mid, sign, small, _ref;
small = 0.01;
lo = 0;
hi = (n + 1) / 2;
debugger;
while (hi > lo) {
mid = (lo + hi) / 2;
diff = Math.pow(mid, 2) - n;
sign = (_ref = diff > 0) != null ? _ref : {
1: 0
};
if (Math.abs(diff) < small) {
return mid;
} else {
switch (sign) {
case 1:
hi = mid;
break;
case 0:
lo = mid;
}
}
}
};
console.log(sqrt(33));
}).call(this);
もう 1 つの問題は、無限ループまたは再帰呼び出しにいる場合、コンソールを開くことさえできないことです。ブラウザがフリーズするだけです。これはとても迷惑です。誰でもこれに光を当てることができますか?