• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

Rekursion vs. Schleife

Ich mische mich auch einmal ein :-)

Prinzipiell läßt sich jedes Problem, das man rekursiv lösen kann, auch iterativ lösen.

Bestimmte Aufgaben sind aber schon von Natur aus rekursiv und lassen sich rekursiv dermaßen elegant lösen, daß man davor in Erfurcht (nicht Erfurt!) niederknien möchte und ein iterativer Ansatz einfach zu umständlich und unangebracht wäre.

Einfache Beispiele, bei denen sich die rekursive Lösung aufdrängt, wären Fakultät und Fibonacci-Zahlen. Etwas komplexer wären Mandelbrotfraktale (Apfelmännchen) und auch Schach sollte dazugehören.

eben!
Programmieren ist wie Gedichte schreiben, und sowas ist einfach schön:

public static int ggt(int x, int y) {
if (y==0) return x;
else return ggt(y,x%y);
}

;) :D
 
  • Like
Reaktionen: MacMark
Na das macht die Sache doch klarer, jetzt versteh ich besser was du meinst.
Ja, das ist in der Tat so, wenngleich man aber eben in der Programmrepräsentation unter zuhilfenahme eines Stacks eine iterative Lösung hinbekommen kann.
 
wenngleich man aber eben in der Programmrepräsentation unter zuhilfenahme eines Stacks eine iterative Lösung hinbekommen kann.
Nur: Was hat man davon? Dadurch wird es auch nicht besser oder schneller berechenbar. Das Schöne an wirklich iterativen Implementierungen ist ja gerade, daß sie keinen Stack benötigen und somit nicht maßlos Platz anfordern müssen. Zumindest ist es das, was ich mit "iterativ" verbinde.
 
Naja, Beispiel von Java:
Die JVM hat ne interne Stacksize die indirekt die Anzahl der Methodenaufrufe und somit auch die Rekursionstiefe begrenzt. Klassische Stacks die dagegen auf dem Heap liegen können somit wesentlich größer werden, da die Heapsize größer ist als die Stacksize.