Рисование дерева с использованием рекурсивной функции - Pascal ABC

Формулировка задачи:

Нарисовать дерево с помощью рекурсии.

Код к задаче: «Рисование дерева с использованием рекурсивной функции - Pascal ABC»

textual
uses graphABC;
{процедура рисования одной линии по заданным параметрам
координаты начала, длина и угол наклона}
Procedure lineto1(x,y:integer; l,u:real);
begin
   line(x,y,round(x+l*cos(u)), round(y-l*sin(u)));
end;
{рекурсивная процедура рисования всего дерева
параметры: координаты начала-низ, начальная длина, начальный угол от оси Х}
function Draw(x,y,n:integer; l,u:real):integer;
begin
if n=0 then Draw:=0{выход из рекурсии}
else
 begin
  l:=l*0.7;{уменьшаем}
  lineto1(x,y,l,u);{рисуем первую линию}
  dec(n);{уменьшаем уровень}
  x:=round(x+l*cos(u));{вычисляем новые координаты}
  y:=round(y-l*sin(u));
  Draw:=Draw(x,y,n,l,u+pi/8);{рекурсивно вызываем 1 дополнительную}
  Draw:=Draw(x,y,n,l,u-pi/8);{2}
 end;
end;
begin
setpencolor(clGreen);
{вызываем процедуру с фактическими параметрами:
начало посередине экрана внизу, начальная линия=20, начальный угол=90 гр.}
Draw(windowwidth div 2,windowheight-20,20,150,pi/2);
end.

11   голосов, оценка 4.182 из 5


СОХРАНИТЬ ССЫЛКУ