1. С использованием процедуры OTREZOK построить (при alfa= 90o) прямоугольный и ромбический спиралевидные лабиринты из отрезков разного цвета.
2. Построить прямоугольник со сторонами разного цвета и основанием, движущимся согласно процедуре OTREZOK.
Следующий пример показывает использование рекурсии при построении узоров, напоминающих кружева. Задается размер "стежка" - короткой линии длиной dl, функция варьирования угла перемещения ugol в зависимости от номера шага n.
uses Graph;
var gD, gM, n, x, y, x1, y1, k: integer; dl, ugol, ugol_0, s, i: real;
{-----------------------------------------------------------------}
PROCEDURE ANGLE(x, y: integer);
begin n:= n+1;
ugol:=2*pi*n/s; ugol_0:=ugol; { равномерное увеличение угла по параметру n }
ugol:= ugol_0 + i*sin(k*ugol); { периодическое отклонение угла:
параметр i определяет амплитуду, k - частоту отклонений }
x1:= x + round(dl*cos(ugol)); { (x1, y1) - координаты следующей точки }
y1:= y + round(dl*sin(ugol));
Line(x, y, x1, y1); { рисуем "стежок" }
if n<s then ANGLE(x1, y1) { рекурсивный вызов }
end;
begin gD:= Detect; InitGraph(gD, gM, 'z:\tp7\bgi');
ugol_0:= 0; { начальное значение угла }
n:= -1; { начальное значение счетчика изменения угла }
x:= 300; y:= 70; { координаты начала рисования }
dl:= 4; { размер линии ("стежка") }
k:= 8; { количество циклических изменений угла }
s:= 500; { количество "стежков" узора }
i:= 2.; { амплитуда циклических изменений угла }