|
#1
|
|||
|
|||
нарисовать фрактал
помогите реализовать плиз:
в коде где-то ошибка, а вот где понять не могу: Код:
procedure TForm1.ToBuild(x1,y,x2:integer); var ax1,bx1,ax2,bx2:integer; begin image1.Canvas.MoveTo(x1,y); image1.Canvas.LineTo(x2,y); ax1:=x1; bx1:=x1+round((x2-x1)/3); ax2:=x2-round((x2-x1)/3); bx2:=x2; if round((x2-x1)/3)>=1 then exit; end; procedure TForm1.Button1Click(Sender: TObject); begin ToBuild(5,20,605); end; end. Последний раз редактировалось Admin, 23.05.2011 в 09:34. |
#2
|
||||
|
||||
что-то не наблюдаю рекурсивный вызов функции........
|
#3
|
|||
|
|||
Цитата:
Код:
if round((x2-x1)/3)>=1 then begin ToBuild(ax1,y+50,bx1); ToBuild(ax2,y+50,bx2); end; Последний раз редактировалось lmikle, 24.05.2011 в 00:02. |
#4
|
||||
|
||||
типа, того...
В смысле заменить??? |
#5
|
|||
|
|||
по иному это же прописать нужно...так не принимает препод...
|
#6
|
||||
|
||||
Цитата:
|
#7
|
|||
|
|||
да...
либо рекурсию как-то по другому описать можно??? |
#8
|
||||
|
||||
в принципе описано все правильно, алгоритм выдерживает хороший тон, если честно, даже не знаю что вашему преподу нужно..
если только его как-нибудь оптимизировать, например это (x2-x1)/3 заменить на это (x2-x1)*0.3 или на это (x2-x1) div 3 при этом тогда не нужно округление роундом и.т.д. |
#9
|
|||
|
|||
я тоже не понимаю препода...
спасибо за помощь;-) |
#10
|
||||
|
||||
Цитата:
|
#11
|
||||
|
||||
Может препод хочет без рекурсии? В теории любой рекурсивный алгоритм можно описать циклом и наоборот. А вот как именно - думать надо.
jmp $ ; Happy End! The Cake Is A Lie. |
#12
|
||||
|
||||
Цитата:
Если бы препод предложил поиск факториала без ракурсии написать, я бы бровью не повел. но в данном случае я бы его послал в рекурсивный нах... |
#13
|
||||
|
||||
Да мало ли, чего ему в голову взбрело...
jmp $ ; Happy End! The Cake Is A Lie. |