
Ejemplo de recursividad
Pascal/Turbo Pascal
20.067 visualizaciones desde el 12 de Marzo del 2002
Utilizando la recursividad, dibuja una estrella.
procedure estrella(x,y,n,r,rMin,color:integer; reduc,alfa:real);
var
i,x2,y2:integer;
inc:real;
procedure rama(x,y:integer; r,alfa:real);
var
i,x2,y2:integer;
inc:real;
begin
inc:=alfa;
for i:=1 to n-1 do
begin
x2:=round(x+r*cos(inc));
y2:=round(y+r*sin(inc));
draw(x,y,x2,y2,color);
if r>rMin then rama(x2,y2,r*reduc,inc-(n-2)/n*pi);
inc:=inc+2*pi/n;
end;
end;
begin
inc:=alfa;
for i:=1 to n do
begin
x2:=round(x+r*cos(inc));
y2:=round(y+r*sin(inc));
draw(x,y,x2,y2,color);
rama(x2,y2,r*reduc,inc-(n-2)/n*pi);
inc:=inc+2*pi/n;
end;
end;
const
reduc:array[3..6] of real=(0.63,0.5,0.38,0.32);
rMin:array[3..6] of byte=(1,2,1,1);
var
i:integer;
tecla:char;
BEGIN
for i:=3 to 6 do
begin
graphColorMode;
palette(2);
estrella(160,100,i,45,rMin[i],3,reduc[i],0.1);
read(kbd,tecla);
end;
textMode;
END.
Comentarios sobre la versión: Versión 1 (4)