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


 

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

85915. Информационно-аналитическая система производственно-экономической деятельности предприятия 3.4 MB
  В данной работе дана общая характеристика ГОАО ТП Уголь ДП ГХК Краснодонуголь как объекта управления; приведены теоретические основы анализа производственно-экономической деятельности автотранспортного предприятия описано информационное обеспечение предприятия и разработано программное обеспечение...
85916. Автоматизация учета хозяйственной деятельности предприятия 350.5 KB
  В условиях рыночной экономики возможностей для инвестирования довольно много. Вместе с тем объем финансовых ресурсов, доступных для инвестирования, у любого предприятия ограничен. Именно поэтому особую актуальность приобретает задача учета расхода денежных средств на инвестируемом предприятии.
85918. СОВЕРШЕНСТВОВАНИЕ ФИНАНСОВОЙ СТРАТЕГИИ НА ПРЕДПРИЯТИИ 689 KB
  В дипломном проекте, выполненном на базе ОКП «Луганской областной топливно-энергетической компании», обоснована актуальность темы функционирования специального порядка расчетов за энергоносители и жилищно-коммунальные услуги в Луганской области.
85919. Розрахунок технологічного процесу деталі Пробка 1.35 MB
  Опис конструкції і службового призначення складальної одиниці Пробка призначена для контролю пересічення отворів Ø72Н7 в деталі корпус КМС. Розробка конструкції деталі При розробці конструкції деталі необхідно добре представляти її службове призначення поверхні якими деталь базується у вузлі і її робочі поверхні призначені для передачі зусиль чи руху. Призначення поверхонь деталі № пов Найменування поверхні Розмір мм Поле допуску Шорсткість Rа км...
85921. Фотография в кованой рамке 395.92 KB
  Это настольная фоторамка полностью состоящая из разнообразно изогнутых элементов. Эта фоторамка имеет необычную оригинальную форму. Данная фоторамка попадает в возрастной диапазон от 25 до 35 лет так как имеет молодежные стилистические особенности такие как упомянутая ранее стилизация.
85923. Автоматизация системы анализа конкурентоспособности предприятия на примере МЧП «Рубеж» 393.5 KB
  Умение быстро находить нужную информацию является одним из важных условий продуктивности и качества работы специалистов. В ближайшие годы трудно будет себе представить рабочее место экономиста без персонального компьютера, и возможности этого универсального инструмента должны быть использованы специалистами в полной мере.