Рекурсия
background image

Практическо упражнение №6

Рекурсия. Рекурсивни техники за обработка на списъци

Цел на упражнението

:  

Запознаване с понятието рекурсия. Разглеждане на основните схеми за 

работа с линеен едносвързан списък (създаване, обхождане и търсене на елемент) – рекурсивна 
техника.

1. Рекурсия. Рекурсивна дефиниция на свързан списък.

Рекурсията е метод в математиката и програмирането за дефиниране на функция, процедура 

или структура от данни чрез самата себе си. 

Силата на рекурсията се състои във възможността за дефиниране на безкрайно множество от 

обекти   чрез   краен   оператор.   По   същия   начин   чрез  рекурсивна   програма   може   да   се   опише 
безкраен брой пресмятания, даже ако тази програма не съдържа явни цикли.

Ако една процедура 

P

 съдържа обръщение към себе си, се казва, че тя е 

пряко рекурсивна

ако  

P

  съдържа  обръщение   към друга  процедура  

Q

,  която  от  своя  страна   съдържа  (пряко  или 

непряко) обръщение към 

P

, се казва, че 

P

 е 

непряко рекурсивна.

Обикновено за процедурата се дефинират параметри и локални за нея обекти (константи, 

типове,   променливи   и   други   процедури   и   функции).   Всеки   път,   когато   такава   процедура   се 
активира рекурсивно, се създава ново копие на локалните променливи и параметри. Макар, че те 
имат същите имена, стойностите им са различни от тези на по-горното ниво на рекурсията. Всички 
недоразумения   ,   които   могат   да   възникнат   вследствие   на   еднаквите   имена,   се   избягват   чрез 
правилата за област на действие на идентификаторите. Друг проблем при рекурсивните алгоритми 
е осигуряването на край на изпълнението. Очевидно, основно изискване е рекурсивното извикване 
на   процедурата  

P

  да   се   подчинява   на   условие  

B

,   което   в   даден   момент   да   престава   да   бъде 

удовлетворено. Следователно, схемата на рекурсивна процедура може да се изрази по-точно така:

procedure 

P

;

begin

if B then 

begin
  

...

  

P

;

{рекурсивно извикване}

end

end;

Рекурсивните алгоритми са особено подходящи, когато проблемът, който ще се решава или 

структурата от данни, която ще се обработва, са рекурсивни.

Пример за рекурсивно дефиниран проблем е функцията 

факториел

:

N!=N*(N-1)*(N-2)*…*2*1, 

като се приема, че 

0!=1

, т.е

1,

N=0

N! = 

N*(N-1)!, 

N>0

Рекурсивната реализация на функцията за изчисляване на факториел е:

чрез рекурсивна функция;

Function 

Fact

(N:integer):integer;

Begin

If  N=0  then Fact:=1

   else Fact:=N*

Fact

(N-1);

End;

Гл.ас. Е. Големанова

583310_pomagalo_com.doc

Упражнение № 6

=1=


Това е само предварителен преглед!

Рекурсия. Рекурсивни техники за обработка на списъци

Запознаване с понятието рекурсия. Разглеждане на основните схеми за работа с линеен едносвързан списък (създаване, обхождане и търсене на елемент) – рекурсивна техника....

Рекурсия. Рекурсивни техники за обработка на списъци

Предмет: Програмиране, Информатика, ИТ
Тип: Упражнения
Брой страници: 5
Брой думи: 749
Брой символи: 4477
Изтегли
Този сайт използва бисквитки, за да функционира коректно
Ние и нашите доставчици на услуги използваме бисквитки (cookies)
Прочети още Съгласен съм