Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
прога.docx
Скачиваний:
1
Добавлен:
28.10.2018
Размер:
96.22 Кб
Скачать

23. Рекурсия

При вычислениях возможны случаи, когда подпрограмма обращается к себе самой. Такую ситуацию называют рекурсией.Примером рекурсии служит подпрограмма вычисления факториала натурального числа:n!=система 1, если n=0; (n-1)!n, если n>0 function f(n:integer ):integer; begin if n=0 then f:=l else f:=f (n-l)*n; end; Обращение к данной функции, например, с фактическим параметром 3, влечет следующие действия. Рекурсия.Рекурсия - это процесс, при котором вспомогательный алго­ритм (функция или процедура) вызывает самого себя. Программу с рекурсией позволяют реализовать только некоторые языки про­граммирования (в частности Pascal). Рекурсия позволяет свести общую задачу к другой, более простой задаче.Идея, рекурсии основана на использовании рекуррентных соотношений.Рекуррентное соотношение (рекуррентная формула) по­зволяет легко найти функцию для некоторого значения аргумента я, если известно ее значение для аргумента /7-1. Рекуррентные соотношения существуют для многих математических функций.Определения с помощью рекуррентных формул иногда называют рекурсивными определениями. Достоинства алгоритмов, в которых используются рекурсии: простота, наглядность и компактность, поскольку использование рекурсии позволяет легко (почти дословно) построить алгоритм вычисления по рекуррентным.формулам.Недостаток таких алгоритмов: неэкономное использование оперативной памяти при их реализации на компьютерах.Текущим уровнем рекурсии называется число рекурсивных вызовов в каждый конкретный момент времени.Главное требование к рекурсивным процедурам: вызов рекурсивной процедуры должен выполняться по условию, которое на каком-то уровне рекурсии станет ложным.Если условие истинно, то рекурсивный спуск продолжается Когда оно становится ложным, то спуск заканчивается и начина­ется поочередный рекурсивный возврат из всех вызванных на данный момент копий рекурсивной процедуры.Безусловные рекурсивные процедуры приводят к бесконеч­ным процессам, и на эту проблему нужно обратить особое внимание, так как практическое использование процедур с бесконеч­ным самовызовом невозможно. Такая невозможность вытекает из того, что для каждой копии рекурсивной процедуры необходимо выделять дополнительную область памяти, а бесконечной памяти не существует.Рекурсии делятся на два вида: прямую и косвенную.При прямой рекурсии во вспомогательном алгоритме осуществляется обращение этого алгоритма к самому себе.

24. Понятие файла

Файл в Паскаль-программе представляет структурирован­ный тип данных, образованный последовательностью компонен­тов одного типа. В Паскале имеются три разновидности файлов: типизированные, безтиповые и текстовые. Доступ к физическим файлам происходит через так называемые файловые переменные.Для организации ввода/вывода в программе необходимо выполнить следующие действия:- объявить файловую переменную;- открыть файл для чтения и/или записи;- выполнить операции ввода/вывода;- закрыть файл.В любой момент доступен только один компонент файла. Другие компоненты становятся доступными по мере продвиже­ния по файлу, В отличие от массива число компонентов в файле не фиксируется. Его длина определяется в процессе выполнения программы и ограничивается только доступной памятью. Пози­ция файла, следующая за последним компонентом файла (или первая позиция пустого файла), помечается специальным марке­ром, который отличается от любого компонента файла. Для работы с файлами используют специальные процедуры и функции. С их помощью осуществляются все необходимые действия по созданию файлов и доступа к их компонентам. Перед выполнением операций файловая переменная связы­вается с физическим файлом, после чего он в тексте программы не упоминается. В Паскале есть подпрограммы, применяемые для файлов любого типа, а также подпрограммы для работы только с определенными типами файлов. Для эффективного выполнения операций ввода/вывода из внешних файлов в Паскале целесообразно использовать нетипизированные файлы, так как при работе с ними можно использовать быстрые дисковые операции низкого уровня. Нетипизированные файлы дают возможность прямого доступа к любому файлу на дис­ке независимо от его типа и структуры.