Мастер-классы по Javascript Екатеринбург Ростов-на-Дону Москва Узнать больше...
Содержание (скрыть) Содержание (показать)

Вычислить факториал

Факториал числа - это число, умноженное на «себя минус один», затем на «себя минус два» и так далее, до единицы. Обозначается n! = n*(n-1)*(n-2)*...*1. Например:

1! = 1
2! = 2*1 = 2
3! = 3*2*1 = 6
4! = 4*3*2*1 = 24
5! = 5*4*3*2*1 = 120

Обратим внимание, что n! можно записать как n * (n-1)!, например 3! = 3*(2*1) = 3*2!

Задача — написать функцию factorial(n), которая возвращает факториал числа n!, используя рекурсивный вызов.

Решение
Решение

По свойствам факториала, как описано в условии, 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), будет дополнительный шаг рекурсии.

#332
Наверх

Реклама

Нашли опечатку?

Нашли опечатку на сайте? Что-то кажется странным?
Выделите соответствующий текст и нажмите Ctrl+Enter!

Последние Комментарии

Помоги другим!

Помоги другим узнать о хорошей статье!