en.javascript.info/1-js/8-more-functions/1-recursion/2-factorial/solution.md
Ilya Kantor d4c714cbe1 work
2016-08-05 16:53:08 +03:00

924 B
Raw Blame History

По свойствам факториала, как описано в условии, n! можно записать как n * (n-1)!.

То есть, результат функции для n можно получить как n, умноженное на результат функции для n-1, и так далее до 1!:

function factorial(n) {
  return (n != 1) ? n * factorial(n - 1) : 1;
}

alert( factorial(5) ); // 120

Базисом рекурсии является значение 1. А можно было бы сделать базисом и 0. Тогда код станет чуть короче:

function factorial(n) {
  return n ? n * factorial(n - 1) : 1;
}

alert( factorial(5) ); // 120

В этом случае вызов factorial(1) сведётся к 1*factorial(0), будет дополнительный шаг рекурсии.