[#] Вычисление факториала на числах Чёрча
habrabot(difrex,1) — All
2015-01-21 17:32:28


Доброго дня, друзья! Тема функционального программирования раскрыта на Хабре весьма неплохо, есть целая куча статей посвященных [λ-исчислению][1], [числам Чёрча][2] и подобным темам, так что ничего нового я не открою, зато мы напишем одну бесполезную и крайне неэффективную программу. Для того, чтоб жизнь мёдом не казалась, ограничим себя небольшим подмножеством языка JavaScript, а именно, будем использовать только анонимные функции от одного аргумента. Больше нам ничего не потребуется (ну почти). Начнем с определения факториала, и посмотрим, что нам понадобится в процессе решения задачи:

var fact = function (n) {
if (n === 0) return 1;
return n * fact(n - 1);
};


Итак, нам потребуются функции, логические значения (для результата операции сравнения с нулем), условный оператор, операции умножения и вычитания единицы, кроме того нужно будет реализовать рекурсивный вызов функции. Готовы? [Ну тогда поехали.][3]

[1]: https://ru.wikipedia.org/wiki/%D0%9B%D1%8F%D0%BC%D0%B1%D0%B4%D0%B0-%D0%B8%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5
[2]: http://en.wikipedia.org/wiki/Church_encoding
[3]: http://habrahabr.ru/post/248331/#habracut