Студопедия — Пример 3.1.
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Пример 3.1.






Function HlighFactor(N1,N2:lnteger):lnteger;

Var P: Integer;

Begin

If N1 > N2 Then P:=HighFactor(N1,N2)

Else

If N2<0 Then р:=N1 {нерекурсивное решение}

Else P:=HighFactor(N2,N1 Mod N2);

HighFactor:= P

End;

Дл того чтобы выполнение рекурсивной программы завершалось, необходимо существование в наиболее простых случаях нерекурсивного решения. В противном случае не исключено зацикливание.

Некоторые алгоритмы гораздо проще описать, используя рекурсию нежели итерацию. Это относится в первую Очередь к алгоритмам, работающим с разного рода списковыми структурами.

Использование рекурсивных процедур и функций делает программу целом более гибкой и наглядной, но не всегда эффективной, так как работает такая программа, как правило, медленнее и требует больше памяти. Дело том, что при каждом вызове рекурсивной процедуры или функции отводится память под локальные переменные.

При сравнении итерационных методов решения и методов, использующих рекурсию, часто эффективными оказываются первые. Таким образом, рекурсии следует применять только там, где нет очевидного итерационного решения. Уровень вложенности рекурсий может быть ограничен в конкретных реализациях языка.

Различают прямую и косвенную рекурсию. Функция HighFactor являете характерным примером прямой рекурсии. Косвенная рекурсия возникает тогда когда один блок вызывает второй, а второй, в свою очередь, первый.

 

C.10.6. Лекция 6 (1 часа)Понятие данных символьного типа. Представление символов в ЭВМ. Таблица ASCI. Операции над символьными данными. Функции CНR(), ORD(), SUCC(), PRED().Символьные строки (string). Операции над строками, встроенные процедуры и функции для работы со строками символов

String (строка) - это один из дополнительных типов данных, введенных в системе программирования Турбо-Паскаль. Структура данных типа String [ N ] аналогична структуре данных типа Array [1.. N ]Of Char. Количество символов в данных типа String [ N ] может быть любым от 1 до N. Максимальное возможное значение константы N= 255. Это максимальное значение принимается по умолчанию, если в описании строки отсутствует конструкция [ N ]. В отличие от массивов строки (а не только их отдельные элементы) могут быть параметрами в процедурах ввода и вывода.
К любому символу в строке можно обратиться точно также, как к элементу одномерного массива, указав имя строки и индекс. В системе Турбо-Паскаль для работы со строками предусмотрен ряд процедур и функции:
К строкам можно применять операцию “+” - сцепление, например:
st:= ‘a’ + ‘b’;
st:= st + ‘c’; {st содержит ‘abc’}

Copy(st, index, count) - функция типа String; копирует из строки st count символов, начиная с символа с номером index.
Delete(st, index, count) - процедура; удаляет сount символов в строке st, начиная с символа с номером index.
Insert(subst, st, index) - процедура; вставляет подстроку subst в строку st, начиная с символа с номером index.
Length(st) - функция типа Integer; возвращает длину строки st.
Pos(subst,st) - функция типа Integer; отыскивает в строке st первое вхождение подстроки subst и возвращает номер позиции, с которой она начинается; если подстрока не найдена, возвращается 0.
Str(x:[width[: decimals] ], st) - процедура; преобразует число x вещественного или целого типов в строку символов st так, как это делает процедура Writeln перед выводом.
Val(st,x,code) - процедура; преобразует строку символов st во внутреннее представление целой или вещественной переменной x, которое определяется типом этой переменной; параметр code содержит ноль, если преобразование прошло успешно, и тогда в x помещается результат преобразования, в противном случае он содержит номер позиции в строке st, где обнаружен ошибочный символ, и в этом случае содержимое x не меняется; ведущие пробелы в строке st должны отсутствовать.
Операции отношения =, <>, >, <, >=, <= выполняются над двумя строками посимвольно, слева направо с учетом внутренней кодировки символов.

 







Дата добавления: 2015-09-04; просмотров: 397. Нарушение авторских прав; Мы поможем в написании вашей работы!



Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Тема 5. Анализ количественного и качественного состава персонала Персонал является одним из важнейших факторов в организации. Его состояние и эффективное использование прямо влияет на конечные результаты хозяйственной деятельности организации.

Билет №7 (1 вопрос) Язык как средство общения и форма существования национальной культуры. Русский литературный язык как нормированная и обработанная форма общенародного языка Важнейшая функция языка - коммуникативная функция, т.е. функция общения Язык представлен в двух своих разновидностях...

Патристика и схоластика как этап в средневековой философии Основной задачей теологии является толкование Священного писания, доказательство существования Бога и формулировка догматов Церкви...

Различие эмпиризма и рационализма Родоначальником эмпиризма стал английский философ Ф. Бэкон. Основной тезис эмпиризма гласит: в разуме нет ничего такого...

Индекс гингивита (PMA) (Schour, Massler, 1948) Для оценки тяжести гингивита (а в последующем и ре­гистрации динамики процесса) используют папиллярно-маргинально-альвеолярный индекс (РМА)...

Методика исследования периферических лимфатических узлов. Исследование периферических лимфатических узлов производится с помощью осмотра и пальпации...

Studopedia.info - Студопедия - 2014-2024 год . (0.007 сек.) русская версия | украинская версия