Hallo!
Kennt sich hier jemand vielleicht mit rekursiven Algorithmen aus und könnte mir ein konkretes Beispiel dafür geben. Ich weiß zwar, was Rekursion allein bedeutet, aber wie soll man das mit Algorithmen verstehen? Sind das dann z.B. Struktogramme, die sich selbst noch mal beinhalten. Das kann ich mir nicht vorstellen . Wäre wirklich dankbar für Hilfe, Peachie
Rekursive Algorithmen
-
-
Also bei einer Rekusion ruft sich ja eine Funktion selber auf
z.B. beim Quick-Sort oder Matrix-Berechnungen
simples aber unsinniges BeispielFür Beispiele schau mal auf dieser Seite nach.
http://www.gym-pforta.bildung-…choedel/delphi/rekursion/Ansonsten werden Rekusionen in Stuktogramen als Aufrufe von unteralgorithmen dargestellt.
-
Vielen Dank, hat mir sehr geholfen :)) ! Weißt du vielleicht auch, was genau die Fibonaccizahl ist?
-
Fein
http://de.wikipedia.org/wiki/Fibonacci-Zahlen
Oder für ganzfaule!
--> http://www.swissdelphicenter.ch/de/showcode.php?id=2007p.s. Wenn du das nutzen solltest, dann versteh bitte den Algorithmus
-
Vielen Dank :)) ! Meine Kameraden werden sich freuen, wenn ich ihnen von irgendwelchen unsterblichen Kaninchen erzählen werde !
Irgendwie deprimiert mich das alles, weil ich so viel nicht verstehe und ich doch eigentlich Informatik studieren wollte . Ich habe nämlich schon wieder ne Frage, und zwar kann ich nirgends finden, was eigentlich Rekursionsfall bedeutet. Vielen Dank für alle hilfreichen Tipps! -
Hat sich erledigt ! Rekursionsfall bedeutet doch nur, dass eine Bedingung noch erfüllt ist und deshalb der rekursive Aufruf stattfindet, oder?
-
Nur noch eine Frage und dann hat es sich hoffentlich erledigt ! Ich finde für rekursive Algorithmen nämlich nur den Vorteil, dass sie kürzer und überschaubarer als z.B. Iterationen sind, da keine genaueren Angaben über die Tiefe der Verschachtelung gemacht werden müssen. Gibt es sonst keine Vorteile? Vielen Dank!
-
Der Rekursionsfall ist nur der aufruf der Prozedur/Funktion (in der Prozedur/Funktion).
Rekursive Algorithmen haben meist den Vorteil das sie schneller sind und der Quelltext überschaubarer. Allerdings bedeutet Geschwindigkeit in der Informatik/Technik immer höhere Hardwareanforderungen. Im Falle eines rekursiven Algorithmuses bedeutet es höheren Speicheraufwand (hier der Stack)
Übrigens sollten bei rekursiven Aufrufen eine Art Abbruchbedingung eingebaut sein. Die sind notwendig um Endlosschleifen zu verhindern.--------------------------------------------------------------------------------
Stack= Stapelspeicher
[engl. stack] (Kellerspeicher), ein Speicherbereich, in dem die abzuarbeitenden Befehle nacheinander eingegeben und bis zur Bearbeitung gespeichert werden. Durch die Abarbeitung eines Befehls rücken alle anderen vorhandenen Befehle um eine Position nach vorne (bzw. oben). Ein Stack Pointer (dt. Pointer) enthält dabei die jeweilige Position des obersten Elements des Stapelspeichers. Über diesen Pointer werden neue Elemente hinzugefügt oder alte Elemente entfernt.
Die Befehle werden in Stapelspeichern meist nach dem LIFO-Prinzip verarbeitet. Dies bedeutet, dass der zuletzt abgelegte Befehl auch als Erster wieder abgearbeitet wird, bevor der zweite im Stapelspeicher befindliche Befehl (der dann die oberste Position einnimmt) abgearbeitet werden kann. -
Vielen Dank für die detaillierte Antwort! Ich habe dadurch gemerkt, was noch alles in meiner Ausarbeitung fehlt (z.B. LIFO-Prinzip). Danke :))
-
LIFO = Last In First Out
Also das System beim stack. Also was zu letzt in den Stack geschrieben wird wird als erstes wieder ausgelesen.
Man kann sich das ähnlich einem stapel Kisten vorstellen die übereinandere stehen.
Die oberste muss als letztes draufgepackt worden sein. und muss als erstes weggenommen werden damit an an die anderen Kisten kommt. -
Danke, habe ich verstanden !