Рисование дерева с использованием рекурсивной функции - 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.
Объяснение кода листинга программы
- В начале кода подключается библиотека graphABC.
- Затем определяется процедура lineto1, которая принимает координаты начала, длину и угол наклона и рисует одну линию с помощью функции line из этой библиотеки.
- Далее определена рекурсивная процедура Draw, которая принимает координаты начала, длину, начальный угол и уровень (количество ветвей дерева). Если уровень равен нулю, то процедура прекращает свою работу. В противном случае, длина линии увеличивается на 70%, угол уменьшается на 90 градусов и вызывается сама себя для оставшихся ветвей дерева. После этого координаты x и y обновляются для следующей итерации.
- Наконец, вызывается функция Draw с фактическими параметрами: середина экрана в качестве x, 20 в качестве y, 20 в качестве n и 150 в качестве l для рисования первой линии, и 20 в качестве n и 150 в качестве l для рисования второй линии. Цвет пера установлен на зеленый с помощью функции setpencolor.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д