Я создаю веб-сайт, на котором с помощью PHP, AJAX и Javascript пользователь может помочь рассчитать PI, это чисто для целей обучения, и я знаю, что существуют более эффективные способы расчета PI.
Мне нужно выбрать случайное место, а затем посмотреть, находится ли оно в круге, потому что я создал этот код
var size = 500;
function calculate() {
var Xpos = Math.floor(Math.random() * size);
var Ypos = Math.floor(Math.random() * size);
var dist = Math.hypot(Ypos-Xpos, size / 2 - size / 2);
if (dist <= size / 2) postMessage(true);
else postMessage(false);
setTimeout("calculate()", 1);
}
calculate();
Это прекрасно работает, хотя может быть и быстрее, поскольку там есть ненужный таймаут (я думаю, что он все равно не нужен), поэтому, если я просто удаляю его и заменяю его только на calculate();
, чтобы ускорить его, я получаю эту ошибку
Uncaught RangeError: превышен максимальный размер стека вызовов
Как мне решить эту проблему, я бы хотел, чтобы рабочий работал для каждого (или пока пользователь не закроет страницу)
EDIT:
Чтобы было ясно, код, который я разместил выше, работает! но он перестает работать, когда я заменяю setTimeout("calculate()", 1);
на calculate();