Rekursive Algorithmen

  • 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

  • Vielen Dank :)) ! Meine Kameraden werden sich freuen, wenn ich ihnen von irgendwelchen unsterblichen Kaninchen erzählen werde :D !
    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!

  • Nur noch eine Frage und dann hat es sich hoffentlich erledigt :rolleyes: ! 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.

  • 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.