Рисование дерева с использованием рекурсивной функции - 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.

Объяснение кода листинга программы

  1. В начале кода подключается библиотека graphABC.
  2. Затем определяется процедура lineto1, которая принимает координаты начала, длину и угол наклона и рисует одну линию с помощью функции line из этой библиотеки.
  3. Далее определена рекурсивная процедура Draw, которая принимает координаты начала, длину, начальный угол и уровень (количество ветвей дерева). Если уровень равен нулю, то процедура прекращает свою работу. В противном случае, длина линии увеличивается на 70%, угол уменьшается на 90 градусов и вызывается сама себя для оставшихся ветвей дерева. После этого координаты x и y обновляются для следующей итерации.
  4. Наконец, вызывается функция Draw с фактическими параметрами: середина экрана в качестве x, 20 в качестве y, 20 в качестве n и 150 в качестве l для рисования первой линии, и 20 в качестве n и 150 в качестве l для рисования второй линии. Цвет пера установлен на зеленый с помощью функции setpencolor.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

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