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


 

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

9296. Общие принципы лечения переломов костей 19.25 KB
  Общие принципы лечения переломов костей И стоит вопрос так, от того что студенты знают, лекции редко читают, нескольких слов. Травматизм занимает третье место, после респираторных заболеваний У мужчин 15-29 лет стоит на первом месте. Требуют гопитал...
9297. Деонтология в хирургии 21.89 KB
  Лекция №16 Деонтология в хирургии Термин деонтология введен вначале 19 века английским философом и священником Бентом, как название науки о профессиональном поведении человека. Деонтология – учение о нравственных аспектах действия врача в сфе...
9298. Травматизм. Социально-экономическое значение. Принципы оказания медицинской помощи 24.51 KB
  Травматизм. Социально-экономическое значение. Принципы оказания медицинской помощи. Травма - воздействие на организм человека внешних факторов, которые вызывают анатомические и функциональные нарушения (сотрясение, ушибы, растяжения, разрывы, с...
9299. Травматический шок. Этиология и патогенез. Принципы лечения 23.15 KB
  Травматический шок. Этиология и патогенез. Принципы лечения Шок – внезапно возникшее критическое состояние организма, проявляющееся быстропрогрессирующим ухудшением функций жизненно важных систем. Термин введен в 1737 году французским хирургом Л...
9300. Синдром длительного сдавления 18.66 KB
  Лекция №19 Синдром длительного сдавления. В локализации повреждений преобладает как правило, сдавление конечностей (60% всех случаев СДС - нижние конечности, и 20% - верхние). При уже развившейся острой почечной недостаточности летальность дост...
9301. Медицина катастроф. Классификация. Организация медицинской помощи 26.56 KB
  Лекция №20 Медицина катастроф. Классификация. Организация медицинской помощи. Рост тяжелых антропогенных и природных катаклизм, сопровождающийся значительным материальным ущербом и огромными человеческими жертвами стал поводом и основной причиной дл...
9302. Ожоговая травма. Ожоговая болезнь. Современные принципы терапии 24.23 KB
  Лекция №21 Ожоговая травма. Ожоговая болезнь. Современные принципы терапии. Ожоги - повреждение тканей, вызванные воздействием термической, химической, электрической или лучевой энергии. В первую очередь поражаются кожные покровы (4-6% массы те...
9303. Отморожения. Общее переохлаждение. Современные принципы терапии 23.62 KB
  Лекция №22 Отморожения. Общее переохлаждение. Современные принципы терапии. Холодовая травма (криотравма) - поражение тканей в результате воздействия на организм низкой температуры окружающей среды. Делится: Местная: Острая - ч...
9304. Первичная хирургическая обработка ран. Профилактика раневой инфекции 17.91 KB
  Лекция №23 Первичная хирургическая обработка ран. Профилактика раневой инфекции. Первичная - это первое по счету вмешательство, проведенное по первичным показаниям, обусловленным характером ранения с целью профилактики раневой инфекции. Вторичн...