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

    На этом шаге мы определимся с дальнейшим изложением.

    Мы видели, что хвостовые рекурсивные функции можно вывести, опираясь на итерационный подход или на готовую итерационную версию. Далее мы увидим, что для некоторых простых вычислительных задач, содержащих формулы, можно создать те же хвостовые рекурсивные функции, но с использованием чисто декларативного подхода. Эта стратегия связана с формальными методами разработки программного обеспечения, которые выходят за рамки нашего изложения. Но суть её в том, что некоторые хвостовые рекурсивные функции реализуются с помощью обобщённых (расширенных) функций, решающих ту же задачу. Например, метод factorial_tail(n, p) из примера 11.4 - обобщение функции факториала. Очевидно, при p = 1 метод вычисляет факториал n, но при других значениях p он вычислит нечто иное. В данном случае нетрудно видеть, что метод вычисляет p * n!. Стратегия разработки алгоритма, описанная далее, заключается в разработке таких обобщённых хвостовых рекурсивных функций с использованием рекурсивных понятий и элементарной алгебры. Кроме того, подобная методология может привести к неэффективным, но правильным вложенным рекурсивным алгоритмам.

    На следующем шаге мы вернемся к факториалу.




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