
- •Рекурсия
- •Общие положения
- •Виды рекурсии
- •{ Бесконечная рекурсия }
- •Структура программы в оперативной
- •Главное требование к
- •Рекурсивные подпрограммы
- •Внутренний механизм
- •Физическое
- •Основные определения
- •Формы рекурсивных подпрограмм
- •Формы рекурсивных подпрограмм
- •Формы рекурсивных подпрограмм
- •Приклад 1.
- •Приклад 2.
- •Приклад 3.
- •Приклад 4.
- •Приклад 5.
- •Приклад 6.
- •Приклад 7.
- •Приклад: возведення у цілий степінь var a:real;
- •Приклад: Обчислити хn, n 0, ціле за допомогою рекурсії.
- •Алгоритми з поверненням
- •Шахова задача про хід коня
- •Шахова задача про вісім ферзів

Приклад 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