Advertisement
AndyGrig

Untitled

Apr 19th, 2022
1,039
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.24 KB | None | 0 0
  1. uses GraphABC;
  2.  
  3. var
  4.   colors: array[1..10] of Color;
  5.  
  6. procedure draw(n, x, y, r: integer);
  7. begin
  8.   if n = 0 then exit; //если кончились уровни рекурсии - выходим из функции
  9.   SetBrushColor(colors[n]); //берём цвет, соответствующий уровню
  10.   FillCircle(x, y, r); //красим круг
  11.  
  12.   //вызываем эту же функции, но для радиуса в 3 раза меньше, смещённую и с уровнем рекурсии на 1 меньше
  13.   draw(n - 1, x - 2 * (r div 3), y, r div 3); // левый подкруг
  14.   draw(n - 1, x, y, r div 3); // центральный подкруг
  15.   draw(n - 1, x + 2 * (r div 3), y, r div 3); // правый подкруг
  16.   draw(n - 1, x, y - 2 * (r div 3), r div 3); // верхний подкруг
  17.   draw(n - 1, x, y + 2 * (r div 3), r div 3); // нижний подкруг
  18. end;
  19.  
  20. begin
  21.   // заполняем массив цветов рандомными цветами
  22.   for var i := 1 to 10 do
  23.     colors[i] := rgb(Random(255), Random(255), Random(255));
  24.  
  25.   SetWindowSize(900, 900);
  26.   CenterWindow;
  27.   draw(9, 450, 450, 360); //draw(уровень рекурсии, x, y, радиус)
  28. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement