Шаг 179.
Рекурсия на Python. Вложенная рекурсия и снова хвостовая. К хвостовой и вложенной рекурсии через обобщённую функцию. Факториал (общие сведения)

    На этом шаге мы приведем несколько обобщенных формул для вычисления факториала.

    Естественное рекурсивное определение факториала 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).

    На следующем шаге мы продолжим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг