Вопрос 10. Привести пример программы, использующий восходящую рекурсию для операции со списками.
Добавил: | DMT |
Дата создания: | 30 декабря 2007, 19:23 |
Дата обновления: | 30 декабря 2007, 19:23 |
Просмотров: | 9500 последний вчера, 22:58 |
Комментариев: | 2 |
Вопрос 10. Привести пример программы, использующий восходящую рекурсию для операции со списками. |
Комментарии для "Вопрос 10. Привести пример программы, использующий восходящую рекурсию для операции со списками."
Пользователь: DMT Сообщений: 123 Статус: Программист Зарегистрирован: 18 октября 2007, 2:35 Был:13 ноября 2017, 4:54 | Дата: 4 января 2008, 16:30 Сообщение № 1 |
Восходящая рекурсия - промежуточные результаты вычисляются на некоторой стадии рекурсии, так что ответ строится постепенно и передается в виде параметра рабочей памяти до тех пор. пока не будет достигнута некоторая ( терминальная ) ситуация. К этому моменту ответ уже готов, и нужно передать его вызывающей функции верхнего уровня. Пример 1
В некоторых случаях, при использовании рекурсии, результат вычисляется по-разному, следовательно, он зависит от выбора вида рекурсивной функции. Пример 2:
|
Пользователь: kate Сообщений: 9 Статус: Незримый Зарегистрирован: 4 января 2008, 14:05 Был:28 января 2008, 21:05 | Дата: 8 января 2008, 13:22 Сообщение № 2 |
sort (SLIST,SLIST) %предикат быстрой сортировки • 1-й аргумент – список строк, который требуется отсортировать; • 2-й аргумент – отсортированный список строк (результат). Данное правило использует восходящую рекурсию для сортировки списка(1-й аргумент) и перемещения отсортированного списка в результирующий список(2-й аргумент). div2(STRING,SLIST,SLIST,SLIST)%предикат разбиения списка • 1-й аргумент – голова списка X; • 2-й аргумент – хвост; • 3-й аргумент – список элементов меньше Х; • 4-й аргумент – список элементов больше Х. link(SLIST,SLIST,SLIST) %предикат конкатенации списков • 1-й аргумент – 1 список; • 2-й аргумент – 2 список; • 3-й аргумент – результат конкатенации списков 1 и 2.
|