Основы программирования на

Pascal ABC

 

Рекурсия

 

Рекурсивный объект – это объект, определяемый через один или несколько таких же объектов.
 

Примеры:

Дерево Пифагора из N уровней – это ствол и отходящие от него симметрично два дерева Пифагора из N-1 уровней, такие что длина их стволов в 2 раза меньше и угол между ними равен 90.

 

Это дерево Пифагора из 6 уровней:

Другим примером может послужить предмет находящийся между двух зеркал: он будет повторяться в отражении несколько раз меняя свои размеры.

 

Рекурсивная процедура - это процедура вызывающая сама себя.

Задачи: Построить 

Программа:

program qq;
uses GraphABC;
procedure Pifagor(x0, y0, a, L: real;
N: integer);
const k = 0.6;
var x1, y1: real;
begin
if N > 0 then begin
x1
:= x0 + L*cos(a);
y1
:= y0 - L*sin(a);
Line (round(x0), round(y0),round(x1), round(y1));
Pifagor (x1, y1, a+pi/3, L*k, N-1);
Pifagor (x1, y1, a+3*pi/30, L*k, N-1);
Pifagor (x1, y1, a-3*pi/30, L*k, N-1);
Pifagor (x1, y1, a-pi/3, L*k, N-1);
end;
end;
begin
Pifagor (250, 400, pi/2, 150,6);
end.
 

Но если немного изменить программу:

program qq;
uses GraphABC;
procedure Pifagor(x0, y0, a, L: real;
N: integer);
const k = 0.6;
var x1, y1: real;
begin
if N > 0 then begin
x1
:= x0 + L*cos(a);
y1
:= y0 - L*sin(a);
Line (round(x0), round(y0),round(x1), round(y1));

SetPenColor (clbrown);
Pifagor (x1, y1, a+pi/3, L*k, N-1);

SetPenColor (clyellow);
Pifagor (x1, y1, a+3*pi/30, L*k, N-1);

SetPenColor (clred);
Pifagor (x1, y1, a-3*pi/30, L*k, N-1);

SetPenColor (clgreen);
Pifagor (x1, y1, a-pi/3, L*k, N-1);
end;
end;
begin
Pifagor (250, 400, pi/2, 150,10);
end.

 

Вы увидите интересную вещь :

 

 

 

 

 

 

 

 

 
Hosted by uCoz