• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Rekursion vs. Schleife

milamber

Ribston Pepping
Registriert
07.12.05
Beiträge
295
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

Senior Sanchez

Damasonrenette
Registriert
08.09.06
Beiträge
491
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.
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
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.
 

Senior Sanchez

Damasonrenette
Registriert
08.09.06
Beiträge
491
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.