На этом шаге мы приведем несколько обобщенных формул для вычисления факториала.
Естественное рекурсивное определение факториала n! = f(n) = n * f(n - 1) приводит к линейно-рекурсивной функции. Для создания хвостовой рекурсивной функции ей нужны дополнительные параметры, которые будут содержать информацию, необходимую для того, чтобы вернуть конечный результат в начальном условии. Например, можно ввести новую функцию g(n, p), которая включает новый параметр p и будет определяться своей формулой, зависящей от параметра p, но при этом позволит нам вычислить n!. Несколько вариантов обобщения функции факториала:
g(n, p) = p * n!, (11.2) g(n, p) = p + n!, (11.3) g(n, p) = (n!)p. (11.4)
Очевидно, что из каждой формулы легко получить факториал f(n), задав p = 1 в (11.2) и (11.4) или p = 0 в (11.3).
На следующем шаге мы продолжим изучение этого вопроса.