Was ist der Vorteil von Rekursiv im Vergleich zu Iterativ(Schleifen) in Java bzw allgemein in Programmierung?

4 Antworten

Es gibt keine generellen Vorteile. Manche Sachen sind halt einfacher rekursiv umzusetzen und manche Sachen sind einfacher iterativ umzusetzen.

Zum Beispiel bei Sortieralgorithmen: Quicksort und Mergesort funktionieren beide so, dass sie ein Array so oft in kleinere Arrays aufteilen, bis die Arrays nur noch zwei Elemente haben, die dann sehr schnell sortiert werden können. Das geht am einfachsten rekursiv.

Bei anderen Sortieralgorithmen, wie z.B. Bubblesort, Insertionsort, Radixsort würde es die Sache unnötig kompliziert und unübersichtlich machen, wenn man sie rekursiv bauen würde, deshalb macht man sie iterativ.

Vorteil: ist leichter zu programmieren.

Nachteil: Stapelspeicher könnte ausgehen. Und dabei ist jetzt nicht die Menge in MB gemeint, sondern die maximal erlaubte Verschachtelungstiefe.

Ganz gutes Beispiel wäre: Quicksort im Vergleich zu Bubblesort Algorithmus zum Sortieren von Zahlenfeldern. Quicksort ist rekursiv und schneller, aber kann zum Absurz führen wenn Speicher voll.

Vorteile bei Rekursionen, die einen Stapel brauchen: man verwendet den bereits vorhandenen Stapelmechanismus des Prozessedurein- und -austritts (bzw. Methodenein- und -austritts) und muss daher keinen eigenen Stapelmechanismus programmieren (allerdings ist man dann auch durch den vorhandenen Stapel restringiert). Den internen Stapel zu verwenden kann ungleich schneller sein als einen eigenen programmierten Stapel zu bemühen.

Vorteile bei Rekursionen, die keinen Stapel brauchen: Programmiercode minimal einfacher

Woher ich das weiß:eigene Erfahrung – Hobby und teilweise beruflich

Rekursivität ist die Möglichkeit innerhalb der funktionalen Programmierung Iterationen zu realisieren, und damit zustandslos zu bleiben. Damit bleibt die Korrektheit des Programms BEWEISBAR.