Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
35
Добавлен:
12.05.2015
Размер:
306.69 Кб
Скачать

Приклад 7.

 

{ використання параметра - змінної }

Var

n : integer;

 

Procedure Prn ( Var n : integer);

Begin

 

 

If n > 0 then

 

begin

 

Протокол роботи

Writeln ( n);

n:=n-1;

програми.

Prn ();

.

Writeln ( n);

3

end

 

2

End;

 

1

{--------------}

0

Begin

 

n:=3;

 

0

Prn (n);

0

End.

21

 

Приклад: возведення у цілий степінь var a:real;

function power(factor:real;expo:integer):real; var count:integer;

rez:real; begin

if expo=0 then power:=1 else begin

rez:=factor;

for count:=2 to abs(expo) do rez:= rez*factor;

if expo<0 then power:=1/rez

 

else power:=rez

 

end

 

end;

 

{ головна програма }

 

begin

 

{обчислити x=2a**5+a**3+1}

 

x:=2*power(а,5)+power(a,3)+1;

 

end.

22

Приклад: Обчислити хn, n 0, ціле за допомогою рекурсії.

program help; var y:integer;

function power(x:real;n:integer):real;

begin

if n=0 then power:=1

else power:=power(х,n-1)*x end;

{ головна програма } begin

y:=power(4,8);

end.

23

 

Алгоритми з поверненням

Такі алгоритми використовуються для задач, пов’язаних з “штучним інтелектом”. Вони характерні тим, що вирішують задачу не за фіксованими правилами, а методом спроб і помилок. Процес спроб і помилок поділяється на окремі підзадачі, які набільш природно описуються за допомогою рекурсії.

24

Шахова задача про хід коня

3 2

4

1

x

5

8

6 7

y

25

Procedure <Cпроба_наступного_ходу>; Begin

Repeat

<вибір наступного з можливих ходів> {із списка чергових ходів}

If <хід можливий> Then Begin

<записуємо хід>

If <дошка не заповнена> Then Begin

<спроба наступного

ходу>

If <невдача> Then <видалення

попереднього ходу>

End

End

Until <хід був вдалим> or <немає інших можливих ходів>

End

26

Шахова задача про вісім ферзів

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

27