Лабораторная 8. Рекурсия

  1. Разработать процедуру paint закраски ограниченной области цветом C до границы цвета XС (см. лекции), сократив количество рекурсивных вызовов с помощью преобразования в цикл хвостовой рекурсии. Проверить работоспособность процедуры, границы ее применимости.
    Шаблон процедуры:
    const MaxX=...; // максимальный размер области по горизонтали
    const MaxY=...; // максимальный размер области по вертикали
    type TArea=array[1..MaxX,1..MaxY]of byte; // закрашиваемая область
    procedure paint(x,y:integer; c,xc:byte; var area:TArea);
    begin
     ...
    end;
    
  2. Разработать процедуру paint2 на основе paint, в которой организовать заливку цветом С до границы произвольного цвета. Закрашиваемый цвет = цвету точки, для которой был произведен первый вызов.
    Шаблон процедуры:
    procedure paint2(x,y:integer; c:byte; var area:TArea);
    begin
     ...
    end;
    
  3. Разработать процедуру paint3 на основе paint2, в которой сократить количество рекурсивных вызовов путем замены рекурсии по горизонтали циклом.
    Шаблон процедуры:
    procedure paint3(x,y:integer; c:byte; var area:TArea);
    begin
     ...
    end;