Недавно изучил рекурсивные функции в паскале, захотел потренироваться:
uses PTCCrt,PTCGraph;
var gd,gm:integer; x:char;
procedure tree (a,x,y,ls,df:integer); var x1,y1,lsr,lsv1,lsv2,ng:integer; begin if df <> 1 then lsr:= (ls div df) + (ls*(random(3)*2-1) div 100) else lsr:=ls; x1 := round(x-sin(pi/180*a)*lsr); y1 := round(y-cos(pi/180*a)*lsr); line(x,y,x1,y1); if df>1 then begin ng:=((ls-lsr)*70 div 100); lsv1:=random(round(sqrt(abs(sqr(ls-lsr)-((ls-lsr)*30 div 100))))-ng)+ng; lsv2:=round(sqrt(abs(sqr(ls-lsr)-sqr(lsv1)))); if random(2)=1 then begin tree (a+round(lsv1/(lsv1+lsv2+1)*32),x1,y1,lsv1,df-1); tree (a-round(lsv2/(lsv1+lsv2+1)*32),x1,y1,lsv2,df-1); end else begin tree (a-round(lsv1/(lsv1+lsv2+1)*32),x1,y1,lsv1,df-1); tree (a+round(lsv2/(lsv1+lsv2+1)*32),x1,y1,lsv2,df-1); end; setcolor(white); end; end;
begin gd:=10; gm:=260; initgraph(gd,gm,'');
randomize; x:=readkey; while x<>'a' do begin tree(0,1024 div 2,768,1300,13); x:=readkey; cleardevice; end; closegraph; end.
Что можно улучшить в этой программе? Использую Free Pascal; Модули PTCGraph и PTCCrt можно заменить на Graph и Crt Пример работы:
Сообщение отредактировано: _Артём_ - 6.09.2012 22:51