Program Gilbert;
uses Crt,Graph;
Var
h,gd,gm:integer;
a:byte;
n:byte;
Procedure LD;
Begin
Linerel(0,h);
End;
Procedure LU;
Begin
Linerel(0,-h);
End;
Procedure LL;
Begin
Linerel(-h,0);
End;
Procedure LR;
Begin
Linerel(h,0);
End;
Procedure GDw(i:byte);ForWard;
Procedure GUp(i:byte);ForWard;
Procedure GL(i:byte);
Begin
GDw(i-1);LL;
GL(i-1);LD;
GL(i-1);LR;
GUp(i-1);Delay(5000);
End;
Procedure GR(i:byte);
Begin
GUp(i-1);LR;
GR(i-1);LU;
GR(i-1);LL;
GDw(i-1);Delay(5000);
End;
Procedure GUp;
Begin
GR(i-1);LU;
GUp(i-1);LR;
GUp(i-1);LD;
GL(i-1);Delay(5000);
End;
Procedure GDw;
Begin
GL(i-1);LD;
GDw(i-1);LL;
GDw(i-1);LU;
GR(i-1);Delay(5000);
End;
Begin
clrscr;
Write('vvedite dlinu storoni v pixselyah');
Readln(h);
Write('vvedite poryadok krivoi');
Readln(n);
gd:=detect;gm:=0;
InitGraph(gd,gm,'');
Moveto(100,100);
GUp(n);
Readln;
CloseGraph;
Readln;
End.
Рекурсия в графике (Построение кривой Гильберта), Ошибка переполнения стека. Не могу понять из-за чего? |