Cтраница 2
Если рекурсивная функция вызывается базовой задачей, она просто возвращает результат. Если функция вызывается более сложной задачей, функция разделяет задачу на две части: часть, которую функция умеет выполнять, и несколько упрощенный вариант исходной задачи. Поскольку этот вариант подобен исходной задаче, функция путем рекурсивного вызова начинает работать над такой упрощенной задачей. [16]
Эти рекурсивные функции для выполнения простых задач обработки списков легко выразить, но они могут быть бесполезны для очень больших списков, поскольку глубина рекурсии может быть пропорциональна длине списка. [17]
Эта рекурсивная функция принимает в качестве аргумента ссылку на дерево и вызывает функцию visit для каждого из узлов дерева. В приведенном виде функция реализует прямой обход; если поместить обращение к visit между рекурсивными вызовами, получится поперечный обход; а если поместить обращение к visit после рекурсивных вызовов - то обратный обход. [18]
Многие рекурсивные функции могут быть выражены нерекурсивно с помощью одной или нескольких комбинирующих форм. [19]
Эта рекурсивная функция принимает в качестве аргумента ссылку на дерево и вызывает функцию visit для каждого из узлов дерева. [20]
Термин рекурсивная функция относят часто к ц-рекурси ным функциям. Именно Кли доказал эквивалентность общерекурсивных функций ( задава мых исчислением равенств) и ( л-рекурсивных функций. [21]
Изображение рекурсивных функций при помощи этой универсальной функции производится с использованием Я-символа. [22]
Определение рекурсивных функций на типах данных является простым, систематическим и мощным. [23]
Для рекурсивных функций необходимо задать условие прекращения рекурсии. Обязательно должно произойти нечто, способное заставить программу остановить рекурсию, или же она никогда не закончится. [24]
Теория рекурсивных функций наряду с алгеброй списков и лямбда-исчислением является еще одной опорой, на которой покоится Лисп. Под вычислимыми понимаются такие задачи, которые в принципе можно запрограммировать и решить с помощью вычислительной машины. [25]
Определение рекурсивной функции, указанной выше, может выглядеть достаточно обоснованным, но итерационное решение ( см., например, программу на рис. 9.9) может оказаться более эффективным. Задачи, которые можно достаточно просто решить с использованием итерационных циклов, следует решать именно этим методом, а рекурсии необходимо применять только в тех случаях, когда задачи наиболее четко формируются с использованием рекурсий или они не имеют очевидного итерационного решения. [26]
Теория рекурсивных функций имеет как общематематиче-ское, так и прикладное значение. Ее методами доказывается и теорема Матиясевича, сформулированная выше. [27]
Применение рекурсивных функций в теории алгоритмов основано на идее нумерации слов в произвольном алфавите последовательными натуральными числами. Наиболее просто такую нумерацию можно осуществить, располагая слова в порядке возрастания их длин, а слова, имеющие одинаковую длину, - в произвольном ( лексикографическом) порядке. [28]
![]() |
Программа Числа Фибоначчи ( а и результат ее работы ( б. [29] |
Эту рекурсивную функцию используем в программе rabbit ( рис. 8.7), которая подсчитывает и выводит на экран количество кроликов через п месяцев. [30]