Почему рекурсивная функция в node.js вызывает 500?

Есть модуль, у которого есть функция подсчета факториала
MMINF.prototype.factorial = function (n) {
    return (n != 1) ? n * this.factorial(n - 1) : 1;
};

ошибка звучит так:
RangeError: Maximum call stack size exceeded

В ноде нельзя работать с рекурсией или я упускаю что то очевидное?
  • Вопрос задан
  • 265 просмотров
Решения вопроса 1
@Panya
Это зависит от того, какое n вы передаете. Если n довольно большое, то рекурсия может выйти за максимальный размер стека (в Node это 11034 вызова, инфа из www.2ality.com/2014/04/call-stack-size.html). Но в любом случае, лучше не использовать такой метод вычисления факториала, он слишком неэффективный.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы