AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Rekursion oder Iteration. Was ist schneller?
Thema durchsuchen
Ansicht
Themen-Optionen

Rekursion oder Iteration. Was ist schneller?

Ein Thema von mickmack · begonnen am 15. Dez 2003 · letzter Beitrag vom 16. Dez 2003
Antwort Antwort
mickmack

Registriert seit: 24. Sep 2003
Ort: Hamburg
51 Beiträge
 
#1

Rekursion oder Iteration. Was ist schneller?

  Alt 15. Dez 2003, 22:50
Hallo zusammen,

ich habe für mein Programm mehrere doppelt verkettete Listen. Nun möchte ich diese sortieren und stelle mir die Frage, was unter Delphi schneller ist: Ein iterativer oder rekursiver Algorithmus?

Im Netz finde ich dazu ständig widersprüchliche Aussagen, die aber meistens auch von anderen Programmiersprachen ausgehen.

Also ich hätte folgendermaßen argumentiert:
Iterative Lösungen sind schneller, da Rekursionen ihre Zwischenergebnisse auf dem Stack zwischenspeichern und auch von dort wieder lesen müssen.
Bei Iterationen benötigt man nur eine Laufvariable und die Ergebnisvariable, so dass weniger Speicher verbraucht wird.

Wenn nicht lasse ich mich gerne belehren
Tu es oft - Bald bist du zu alt.
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#2

Re: Rekursion oder Iteration. Was ist schneller?

  Alt 15. Dez 2003, 22:57
Moin!

Es kommt immer ganz drauf an, wie sich das Problem besser lösen lässt. Bei iterativen Problemlösungen kann es sein, dass du viel mehr Hilfsvariablen brauchst. Bei rekursiven kann es passieren, dass sehr viele Rekursionsstufen zu Stande kommen.
Du solltest am besten testen, was in deinem Fall schneller arbeitet. Eine allgemeine Aussage hierzu lässt sich nicht treffen.

MfG Niels
  Mit Zitat antworten Zitat
mickmack

Registriert seit: 24. Sep 2003
Ort: Hamburg
51 Beiträge
 
#3

Re: Rekursion oder Iteration. Was ist schneller?

  Alt 15. Dez 2003, 23:17
Danke für die schnelle Antwort.
Die ist praktisch gesehen auch einleuchtend.

Aber würde das theoretisch nicht bedeuten, dass rekursive Lösungen immer schlechter(langsamer) sind, sobald die Rekursionstiefe größer ist als die Anzahl der Hilfsvariablen bei iterativen Lösungen? Und von diesem Fall ist doch meistens, besonders bei dynamischen Listen, auszugehen.

Was spricht dann noch für Rekursion?
1. übersichtlicher
2. teilweise leichter beweisbar
3. was noch?

Und stimmt meine Begründung?
Zitat:
Iterative Lösungen sind schneller, da Rekursionen ihre Zwischenergebnisse auf dem Stack zwischenspeichern und auch von dort wieder lesen müssen.
Bei Iterationen benötigt man nur eine Laufvariable und die Ergebnisvariable, so dass weniger Speicher verbraucht wird.
Tu es oft - Bald bist du zu alt.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#4

Re: Rekursion oder Iteration. Was ist schneller?

  Alt 15. Dez 2003, 23:58
Zitat:
Was spricht dann noch für Rekursion?
1. übersichtlicher
2. teilweise leichter beweisbar
3. was noch?
4. viel weniger Buganfällig

Rekursive Funktionen sind in der Regel immer viel einfacher aufgebaut, besonders bei Tries. Allerdings habe ich auch schon rekursive Lösungen für rein iterative Probleme gesehen, und die waren natürlich viel ineffizienter.

Iterative Lösungen sind meistens wesentlich effizienter und leichter zu kontrolieren, dh. der Programfluß kann zb. besser abgebrochen werden usw.

Die eigentliche Frage muß nicht lauten "ist iterativ besser oder schlechter als rekursiv", sondern eher "um wieviel ist eine iterative Lösung komplizerter aber schneller als eine rekursive Lösung".

Meistens ist es so das ein umschreiben einer bestehenden rekursiven Procedure in eine iterative viel mehr Grips und Zeit kostest als das was sie letzendlich an Performancesteigerung bringt. Auf heutigen Systemen muß man schon enorm tiefe Tries haben um an Grenzen in den rekursiven Proceduren zu kommen.

Gruß Hagen
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Rekursion oder Iteration. Was ist schneller?

  Alt 16. Dez 2003, 14:05
Es gibt auch Algorithmen, bei denen rekursive Algorithmen sehr schnell an ihre Grenzen stoßen, wie z.B. Fibonacci. Die iterative Variante ist hier wesentlich performanter und speicherschonender.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz