Задать вопрос

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

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

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

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

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

Похожие вопросы