Я задал вопрос пару недель назад об использовании setTimeout для факториальной функции, но, к сожалению, это было с незарегистрированной учетной записью, и я так и не получил полного ответа.
Моя основная проблема заключается в том, что я хотел бы написать функцию, которая вычисляет факториал числа, но использует команды setTimeout или setInterval. Толчком к этому является сброс счетчика, который использует IE, чтобы избежать длительного предупреждения сценария. В настоящее время у меня есть факториальная функция:
function factorial(n) {
return 0 === n || 1 === n ? 1 : n * factorial(n - 1)
}
В моем другом посте jsumners был достаточно любезен, чтобы предоставить мне код, который периодически пытался использовать setTimeout при расчете факториала:
function factorial(x) {
executions++;
if (x > 1) {
if (executions % 20 === 0) {
return (function() {
var y = x;
setTimeout(function(y) { return y*factorial(y-1); }, 1);
});
} else {
return x*factorial(x-1);
}
} else {
executions = 0;
return 1;
}
}
В приведенном выше коде теоретически следует использовать команду setTimeout для выполнения следующего умножения, когда число прошедших выполнений составляет коэффициент 20 (мод 20). К сожалению, код не работает, и что происходит, если попытаться вычислить факториал числа больше 20, то результатом будет NaN. Если число меньше 20, тогда ответ правильный.
Кто-нибудь знает решение того или иного способа вычисления факториала с помощью команд setTimeout или setInterval?
Спасибо!