Применение рекурсий в Delphi.pptx
- Количество слайдов: 15
Применение рекурсий в Delphi
• Подпрограммы - процедуры и функции в языке Delphi служат для выполнения специализированных операций.
• Процедура Delphi просто выполняет требуемые операции, но никаких результатов своих действий не возвращает. • Результат - в тех изменениях, которые произошли в программе в процессе выполнения этой процедуры. • В частности, процедура может поменять значения переменных, записать новые значения в ячейки компонентов, сделать запись в файл и т. д.
• Функция Delphi также позволяет выполнить всё перечисленное, но дополнительно возвращает результат в присвоенном ей самой значении. • То есть вызов функции может присутствовать в выражении справа от оператора присваивания. • Таким образом, функция - более универсальный объект!
• Рекурсия это возможность подпрограммы в процессе работы обращаться к самой себе. • Рекурсивный вызов подпрограммы сразу проясняет смысл происходящего. • Естественно, приходится следить за тем, чтобы в подпрограмме обязательно было условие, при выполнении которого дальнейшая рекурсия прекращается, иначе подпрограмма зациклится.
• Рекурсивные процедуры (recursive procedure) - это процедуры, которые вызывают сами себя.
При работе с рекурсивными алгоритмами следует избегать трех основных опасностей: • бесконечная рекурсия. Убедитесь, что ваш алгоритм имеет надежное условие остановки; • глубокая рекурсия. Если алгоритм вызывает слишком глубокую рекурсию, он исчерпает всю память стека. Сократите использование стека, уменьшив количество переменных, которые размещает процедура, или описывая переменные глобально. Если процедура все еще исчерпывает память стека, перепишите алгоритм без рекурсии с помощью устранения хвостовой рекурсии; • неуместная рекурсия. Обычно это происходит, когда алгоритм, подобный рекурсивному алгоритму подсчета чисел Фибоначчи, много раз вычисляет одни и те же промежуточные значения. Если в вашей программе возникают проблемы подобного рода, попытайтесь переписать алгоритм методом снизу вверх. Если алгоритм нельзя преобразовать с помощью восходящего способа, создайте таблицу соответствия промежуточных значений.
• Рекурсивный алгоритм, вызывающий себя несколько раз, называется многократной рекурсией (multiple recursion).
• Вычисление факториала - классическая в программировании задача на использование рекурсии. N! = 1*2*. . . *(N-1)*N = N*(N-1)!
• Рассмотрим программу вычисления факториала. Используем компоненты Edit и Up. Down. Компонент. Up. Down имеет полезное свойство Associate. Стоит в Инспекторе объектов присвоить ему (из выпадающего списка) один из находящихся на Форме компонентов Edit, как компонент Up. Down пристроится к нему, примет его размеры, и изменение его свойства Position будет отображаться компонентом Edit без всякого программирования!
• Натуральное число М называется совершенным, если оно равно сумме всех своих делителей, включая 1, но исключая себя. Напечатать все совершенные числа, меньшие заданного числа N. Код с применением циклов переделать на рекурсию
Задача поиска пути между двумя городами • Если несколько городов соединены дорогами, то очевидно, что попасть из одного города в другой можно различными маршрутами. Задача состоит в нахождении всех возможных маршрутов.
Задача поиска пути между двумя городами
Задача поиска пути между двумя городами
• Процедуру надо описать в разделе interface: • Interface • Procedure Exampl; • Type ……………