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);


 

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

309. Использование программы Поиск решения для решения транспортной задачи 89.5 KB
  Определить план транспортных перевозок так, чтобы стоимость перевозок была минимальной и при этом удовлетворялись все потребности пунктов потребления за счет запасов пунктов отправления.
310. Оценка экологической обстановки в городе Южный 48 KB
  Решающими факторами для построения порта Южный стали глубокая вода (поэтому море почти никогда не замерзает), а также наличие рядом железной дороги, через которую уголь поступает из Кузбасса в Европу.
311. Особливості видавничої діяльності 130 KB
  Видавнича діяльність та структура видавництва. Видавництво в умовах ринкової економіки. Штат та посадові обов’язки працівників. Робота коректора в процесі підготовки видавничого оригіналу. Редагування та підготовка статей до виходу.
312. Особенности теории права. Подзаконные НПА субъектов Федерации 135 KB
  Подзаконные НПА субъектов Федерации. Постановления главы субъекта. Удовлетворение интересов управомоченного лица путем непосредственного воздействия на вещь. Срок испытания при приеме на работу.
313. Проповедование евангельского учения 83.5 KB
  Внимание проповедника к собственным действиям. Притчи призваны были предостерегать учеников от разочарования и одновременно показать им, что их ожидает на поприще благовестия. что Бог ненавидит грех и карает его вечными муками.
314. Анальгетики 41.5 KB
  Общая характеристика анальгетиков. Наркотические анальгетики, их классификация. Отравление морфином и помощь при отравлении. Анальгезирующая активность при определенных видах болей.
315. Імітаційне моделювання використання УСІМ 44 KB
  Використання УСІМ клітчатого автомату мовою matlab. Концепція універсальної системи імітаційного моделювання. Даною УСІМ можливо реалізовувати моделі хвороб, розповсюдження слухів, і реалізовувати все що розповсюджується за допомогою спілкування.
316. Минералы и горные породы. Виды минералов и горных пород 116 KB
  Структура, химический состав и связи минералов. Понятие о горных породах: классификация, минеральный состав, структура и текстура горных пород. Метаморфические горные породы: классификация, структура, текстура и минеральный состав.
317. Роль и значение судебного доказывания и доказательств в гражданском судопроизводстве 111.5 KB
  Понятие, цель и предмет судебного доказывания. Доказательства в гражданском процессе и их обеспечение. Достижение верного знания о фактических обстоятельствах дела в результате проведенного процесса.