68981

Рекурсивні функції і процедури, параметри-процедури

Лекция

Информатика, кибернетика и программирование

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

Украинкский

2014-09-28

30 KB

6 чел.

Лекція №10

Тема: Рекурсивні функції і процедури, параметри-процедури

План заняття:

1. Рекурсивні функції і процедури

2. Параметри процедури

Рекурсивні функції і процедури

Деякі функції можна визначати рекурсивно. Наприклад, f(n)=n! можна визначити так:

n!=

Тобто це є визначенням функції через цю саму функцію, У мові Паскаль рекурсивний опис функції полягає в тому, що в тілі такої функції міститься звертання до цієї ж функції. Наведемо рекурсивний опис функції п!:

function FACT2(n: integer): integer;

 begin

if n=0

then FACT2:=1

else FACT2:=n*FACT2(n-1)

end;

Зазначимо, що в лівій частині оператора присвоєння FACT2 не означає рекурсивності. Рекурсія є в правій частині, де наявне звертання до функції FACT2 з параметром п-1.

Під час обчислення FACT2(3), наприклад, відбувається послідовне вираження FАСТ3(3) через FACT2(2). FACT2(2) через FACT2(1), FACT2(1) через FACT2(0)=1. Тоді FACT2(1)=1; FACT2(2)=2*1=2; FACT2(3)=3*2=6;

У цьому випадку неявно вводяться додаткові змінні. Використання рекурсії робить програму компактнішою, однак потребує додаткового машинного часу і пам'яті.

Як і функції, рекурсивними можуть бути процедури. Ім'я рекурсивної процедури міститься в її тексті. Тобто процедура є рекурсивною, якщо вона викликає саму себе. Такий виклик процедур і функцій може виникнути внаслідок або рекурсивного опису, або рекурсивного звертання.

Рекурсивний опис полягає в тому, що у виконуваній частині процедури або функції міститься звертання до неї самої. Прикладом рекурсивного опису є розглянута функція обчислення факторіала. У випадку рекурсивного опису потрібна наявність базової частини опису, яка забезпечувала б завершення рекурсивних викликів функції або процедури. В наведеному прикладі такою базовою частиною, що забезпечує досягнення ситуації, коли FACT(n) не залежить від FACT(n-1), є визначення функції FACT(0)=1 при n=0.

Прикладом рекурсивного звертання може бути такий оператор:

J:=TR(N1 ,А1, B1,TR(N2, А2, В2, FN));

Тут ім'я функції TR використано як операнд в операторі присвоєння, а також як фактичний параметр цієї функції. Застосування рекурсивних процедур і функцій робить програму в цілому гнучкішою і наочнішою, однак часто менш ефективною.

Параметри-процедури

Як формальні параметри в мові Паскаль, крім параметрів-значень і параметрів-змінних, використовують також імена процедур і функцій.

Параметри-процедури в списку формальних параметрів в авторській версії Паскаль зазначають після службового слова procedure. Наприклад

procedure PR(i, j: integer; varz: real; procedure P);

Приклад використання параметрів-процедур (схематично)

program R;

var ar, br, cr: real;

procedure P(x, y: real);

begin

……

end; {P}

procedure Q(k, g: real);

begin 

……

end; {Q}

Тут результат від процедур Р і Q повинен передаватися через глобальні змінні:

procedure T(procedure S(p, g: real); var a, b: real);

var c,d: real

begin

……

S(c+1,d/2)

……

end {T}

begin {R}

……

T(P, ar, br);

……

T(Q, br, cr);

……

end.{R}

У Турбо Паскалі використання параметрів-процедур дещо інше, зокрема, потрібно попередньо визначити процедурний тип:

type

Proc=procedure(T: real);


 

А также другие работы, которые могут Вас заинтересовать

71753. Изменение таблицы. Выбор данных из таблиц 53 KB
  Оператор ALTER охватывает широкий набор действий, которые изменяют структуру таблицы. Этот оператор используется для добавления, изменения или удаления столбцов существующей таблицы, а также для удаления индексов. Несколько операторов ALTER могут быть объединены в одно предложение...
71754. Создание баз данных 112.5 KB
  Поскольку базы данных и таблицы MySQL хранятся как файлы файловой системы, вы столкнетесь с неприятными различиями - в поведении реализаций для Unix и Win32. Именно, все файловые системы для Win32 нечувствительны к регистру, в то время как файловые системы Unix различают регистр.
71755. ИЗУЧЕНИЕ КОНСТРУКЦИЙ ПОДШИПНИКОВ КАЧЕНИЯ 1.05 MB
  Цель работы: ознакомиться с классификацией и конструкциями основных типов подшипников качения. 1 Классификация подшипников качения Подшипники качения классифицируют по следующим основным признакам: направление действия воспринимаемых нагрузок форме тел качения конструктивным...
71756. Типы и конструкции подшипников качения 225.5 KB
  Ознакомиться с типами и конструкциями наиболее распространенных подшипников качения и их условными обозначениями. Изучить конструкцию трех различных подшипников (получить у преподавателя), начертить их эскиз, измерить и поставить габаритные размеры и расшифровать их условное обозначение.
71757. Электротехнические материалы: Методические указания 344 KB
  Цель работы: Экспериментальное исследование магнитных характеристик ферромагнитных материалов. Снятие кривой намагничивания и гистерезисных циклов. Определение по кривой намагничивания магнитной проницаемости и ее зависимость от напряженности магнитного поля.
71758. ОПРЕДЕЛЕНИЕ ВАТТМЕТРОВЫМ МЕТОДОМ МАГНИТНЫХ СВОЙСТВ ЭЛЕКТРОТЕХНИЧЕСКОЙ СТАЛИ 340.5 KB
  Методические указания к лабораторной работе №7 по курсу «Электротехнические материалы» для студентов специальности 1-53 01 05 «Автоматизированные электроприводы» - ГУ ВПО «Белорусско-Российский университет», 2005 г. Методические указания содержат основные сведения о магнитных свойствах электротехнической стали.
71759. МАТЕРИАЛОВЕДЕНИЕ (Часть 2) 2.94 MB
  Изложены основные теоретические положения и методические указания к выполнению следующих лабораторных работ по курсу Материаловедение: Изучение зависимости между структурой и свойствами чугунов Закалка стали Отпуск закаленной стали Изучение зависимости между структурой и свойствами стали...
71760. МАТЕРИАЛОВЕДЕНИЕ (Часть 1) 1.87 MB
  Измерение твердости, вследствие быстроты и простоты осуществления, а также возможности без разрушения изделия судить о его свойствах, получило широкое применение для контроля качества металла в металлических изделиях и деталях. Существует целый ряд методов измерения твердости...
71761. МАТЕРИАЛОВЕДЕНИЕ (Часть 3) 1.47 MB
  Изложены основные теоретические положения и методические указания к выполнению следующих лабораторных работ по курсу Материаловедение: Химико-термическая обработка стали Цветные металлы и сплавы Выбор стали и назначение режима термической обработки.