![]() |
Sich selbst aufrufender Algorithmus
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe Ein kleines Programm erstellt, mit dem ein Fraktal gezeichnet werden kann.
(Ein Fraktal ist dadurch gekennzeichnet, dass seine einzelnen Bestandteile die selbe Erscheinung haben, wie das Gesamtbild). Meine Frage ist: Wie kann ich eine Prozedur/Funktion in sich selbst aufrufen lassen. Bisher habe ich das Problem gelöst indem ich viele Einzelne Prozeduren erschaffen habe, aber dadurch wird der Quelltext ziemlich unübersichtlich.
Delphi-Quellcode:
Procedure Zeichnen1(x,y:integer;a:real);
Procedure Zeichnen2(x,y:integer;a:real); Procedure Zeichnen3(x,y:integer;a:real); ......
Delphi-Quellcode:
Procedure TForm1.Zeichnen1(x,y:integer;a:real);
begin Dreieck(x,y,a); Dreieck(round(x+a),y,a); Dreieck(round(x+a/2),y-round(sqrt(3)*a/2),a); end; Procedure TForm1.Zeichnen2(x,y:integer;a:real); begin Zeichnen1(x,y,a/2); Zeichnen1(round(x+a),y,a/2); Zeichnen1(round(x+a/2),y-round(sqrt(3)*a/2),a/2); end; Procedure TForm1.Zeichnen3(x,y:integer;a:real); begin Zeichnen2(x,y,a/2); Zeichnen2(round(x+a),y,a/2); Zeichnen2(round(x+a/2),y-round(sqrt(3)*a/2),a/2); end; Procedure TForm1.Zeichnen4(x,y:integer;a:real); begin Zeichnen3(x,y,a/2); Zeichnen3(round(x+a),y,a/2); Zeichnen3(round(x+a/2),y-round(sqrt(3)*a/2),a/2); end; |
Re: Sich selbst aufrufender Algorithmus
Wo ist denn das Problem? Ruf die Funktion doch einfach ganz normal auf.
|
Re: Sich selbst aufrufender Algorithmus
Das was du suchst ist eine rekursive Funktion.
Ein einfaches Beispiel:
Delphi-Quellcode:
function Zaehle (Zahl: Integer): Integer;
begin if Zahl < 20 then result := zaehle(Zahl)+1; end; |
Re: Sich selbst aufrufender Algorithmus
Hi!
Das geht ganz einfach und nennt sich rekursiver Aufruf...
Delphi-Quellcode:
Dies ist natürlich nur ein Beispiel, hat also keinen Sinn ;)
procedure Test(Int: Integer);
begin if Int > 1 then Test(Int - 1); end; Chris EDIT: Sorry, es kam keine rote Box :stupid: |
Re: Sich selbst aufrufender Algorithmus
Wichtig bei der Rekursion ist eigentlich nur eines:
Die Abbruchbedingung. Will heissen: Wann entscheidet die Funktion, dass sie sich eben NICHT mehr selber aufrufen muss sondern einfach nur zurückkehrt. Das ganze sollte tunlichst passieren, bevor es zu einem Stacküberlauf kommt ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz