javascript вызов самого выражения функции изнутри с аргументами - PullRequest
0 голосов
/ 20 февраля 2020

Пожалуйста, кто-нибудь, подскажите, как здесь результат 384. По моему мнению: значение вызванной функции больше 2, поэтому результат должен быть 8 * fa c (8 - 2) 64-2 ans: 62 Я понимаю, что что-то происходит с "fa c", пожалуйста, объясните.

let factoria = function fac(n){
    return n < 2 ? 1 : n * fac(n - 2);
}

console.log(factoria(8));
// result 384

1 Ответ

0 голосов
/ 20 февраля 2020

Эта строка n * fac(n - 2) рекурсивно вызывает себя с новым значением. Сначала он будет вызываться с 8 * fac(8 - 2), поэтому теперь fac будет вызываться снова с 6, затем снова с 4 и так далее

let factoria = function fac(n) {
  console.log(n)
  return n < 2 ? 1 : n * fac(n - 2); // recursive function 
}

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