Нарисовать шестиконечную звезду рекурсией - Pascal ABC

Узнай цену своей работы

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

Нарисовать шестиконечную звезду с помощью рекурсии

Решение задачи: «Нарисовать шестиконечную звезду рекурсией»

textual
Листинг программы
uses graphABC;
const k=6;
var x,y:integer;
procedure snow (x0,y0,r,n:integer);
const t=2*pi/k;
var i,x,y:integer;
begin
 for i:=1 to k do
  begin
   x:=x0+round(r*sin(i*t));
   y:=y0-round(r*cos(i*t));
   line(x0,y0,x,y);
   if n>1 then snow(x,y,r div 3,n-1);
  end;
end;
begin
SetWindowSize(600,600);
SetWindowCaption('Фракталы: что-то похожее на снежинку');
x:=windowwidth div 2;
y:=windowheight div 2;
snow(x,y,180,6);
end.

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

В данном коде используется язык программирования Pascal ABC. Код рисует шестиконечную звезду с помощью рекурсии. В начале кода подключается библиотека graphABC. Далее определяются две переменные: k (равная 6) - количество лучей звезды, и r (равное 180) - радиус звезды. Затем определяется процедура snow, которая принимает четыре аргумента: x0, y0, r и n - номер текущего луча, на котором рисуется звезда, и количество лучей, которое еще нужно нарисовать. Внутри процедуры snow происходит рекурсивный вызов самой себя для каждого из лучей звезды. Для каждого луча вычисляются координаты точки на луче с помощью формулы sin и cos от угла, соответствующего номеру луча, умноженного на t (константа, равная 2*pi/k). Кроме того, перед рекурсивным вызовом процедуры snow, если n больше 1, то происходит вызов процедуры snow для полученного значения x и y, деленного на 3, и с уменьшенным на 1 значением n. Это позволяет нарисовать более сложную структуру звезды. В конце кода устанавливаются размеры окна приложения, задается заголовок и вызывается процедура snow с заданными параметрами.

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


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

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

14   голосов , оценка 4 из 5