факториал отрицательного числа превышает максимальный размер стека вызовов - PullRequest
0 голосов
/ 14 марта 2019

Почему maximum call stack size exceeded при попытке применить эту простую факториальную функцию к отрицательному числу?

function factorial(n) { 
    if (n == 0) { 
        return 1 
    }

    return n * factorial(n - 1) 
} 

Я понимаю, что факторные функции предназначены для неотрицательных целых чисел, но мне интересно, что происходит внутри / в движке JavaScript, когда эта функция вызывается, например, -1.

1 Ответ

2 голосов
/ 14 марта 2019

Он работает бесконечно, потому что (n == 0) не соответствует

если вы передадите отрицательное число

return n * factorial(n - 1) 

рекурсивно вызывает факториальную функцию с более отрицательным числом, и, таким образом, (n == 0) условие не выполняется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...