Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Rekursion


Freak87 - Mo 26.02.07 18:46
Titel: Rekursion
hallo,
muss einen vortrag zur Rekusion halten und mir dabei irgendwie selbst was ausdenken. Habe dazu schon die Potenz einer Zahl iterativ und rekursiv gebastelt.
Im unterricht hatten wir schon fibonacci, fakultät und türme von hanoi.
hat jemand irgendeine idee, was relativ einfach (Bin 13.Klasse und habn schlechten Infolehrer) rekursiv umzusetzen ist?

Vielen Dank schonmal


HelgeLange - Mo 26.02.07 19:30

bäume rekursiv durchsuchen ist einfach und.. erm.. rekursiv...


Narses - Mo 26.02.07 19:31

Moin und :welcome: im Forum!

Quicksort :D

cu
Narses


JayEff - Mo 26.02.07 19:40

Auch interessant ist das Durchsuchen von Ordnern mit Unterordnern mit Hilfe von Suche in: Delphi-Forum, Delphi-Library FINDFIRST etc.
Hierzu kann man die Rekursion für jeden neuen gefundenen Ordner anwenden. Allerdings gibts dazu keine iterative Lösung. Diese Funktion hab ich sogar selbst schonmal hinbekommen :D


GTA-Place - Mo 26.02.07 19:42

Das von JayEff wollte ich sagen :-(


Narses - Mo 26.02.07 19:57

Moin!

Nix gegen eure Vorschläge, user profile iconJayEff und user profile iconGTA-Place ;) Aber ich halte von diesem Vorschlag nix, weil das mehr oder weniger betriebssystemabhängig ist. :? Und genau deshalb wird das auch bei dem Lehrer nicht gut ankommen... :mahn: aber darum geht´s doch wohl, oder? :zwinker:

Nimm lieber was, das man schön algorithmisch unabhängig darstellen kann, darauf stehen Info-Lehrer! :P

cu
Narses


Jakob Schöttl - Mo 26.02.07 20:54

Bei DSTD.INFO gibt es ein Tutorial zum Thema Rekursion, dass als beispiel die Türme von Hannoi (oder wie die heißen) hat. Ich finds aber nicht ganz so einfach...


Lannes - Mo 26.02.07 21:18

Hallo,
ein kleines bisschen OT
user profile iconJayEff hat folgendes geschrieben:
Auch interessant ist das Durchsuchen von Ordnern mit Unterordnern mit Hilfe von Suche in: Delphi-Forum, Delphi-Library FINDFIRST etc.
Hierzu kann man die Rekursion für jeden neuen gefundenen Ordner anwenden. Allerdings gibts dazu keine iterative Lösung. Diese Funktion hab ich sogar selbst schonmal hinbekommen :D
warum sollte das nicht iterativ gehen. Gefundene Ordner in einer StringList zwischenspeichern und fertig. Die Geschwindigkeit ist annähernd gleich.


Freak87 - Mo 26.02.07 21:33

Joa, Danke euch allen, aber habe hier einen anderen Algorithmus gefunden. "Binärer Suchalgorithmus".
Hab hier versucht diesen rekursiv darzustellen, und Nutzte den (iterativen) Pseudo-Code von Wikipedia.
(Link: http://de.wikipedia.org/wiki/Bin%C3%A4re_Suche)
Das klappt auch soweit aber irgendwo muss noch etwas ergänzt werden für den Fall, Dass das SuchElement nicht in dem zu durchsuchendem Feld vorhanden ist. So gibts nen Stack-Überlauf...
Weiß jemand wo? ich wäre ÜÜÜberdankbar, Find nämlich den Haken nicht..


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Procedure Suche(ErstesElement,LetztesElement:Integer);
Begin
 While (SucheErfolgreich=False) and (ErstesElement<=LetztesElement) do
 Begin
  Mitte:=ErstesElement+((LetztesElement-ErstesElement) Div 2);
  If Feld[Mitte]=SuchSchl then SucheErfolgreich:=True
  Else
   If SuchSchl < Feld[Mitte] then Suche(ErstesElement,Mitte-1)
   Else Suche(Mitte+1,LetztesElement);
 End;
End;


PS. Nutzte Turbpascal 7.0

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt


Freak87 - Mo 26.02.07 22:10

Alles klar, habs grad rausgefunden, bedank mich trotzdem für die Bemühungen
Grüße


(Hab die AbbruchBedingung
If ErstesElement<LetztesElement then suche usw.
genommen, falls' wen interessiert...)