AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal Finde das Maximum einer verketteten Liste (mit rekursiver Funktion)
Thema durchsuchen
Ansicht
Themen-Optionen

Finde das Maximum einer verketteten Liste (mit rekursiver Funktion)

Ein Thema von DesWeeedert · begonnen am 16. Mai 2017 · letzter Beitrag vom 22. Mai 2017
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.114 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Finde das Maximum einer verketteten Liste (mit rekursiver Funktion)

  Alt 17. Mai 2017, 05:31
Eine Rekursion ist bei einer einfach verketteten Liste überhaupt nicht nötig.
Das ist der Punkt den ich auch nicht verstehe.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.202 Beiträge
 
Delphi 12 Athens
 
#2

AW: Finde das Maximum einer verketteten Liste (mit rekursiver Funktion)

  Alt 17. Mai 2017, 06:28
Iteration mit einer Schleife gucksich alles an

Rekursion ... die Funktion guckt den übergebenen Parameter an und ruft sich selber auf, wenn es einen Folgeknoten gibt. (xxx ist nicht unbedingt nötig, da die Funktion bereits den Eingamgsparameter prüft)


Kombinieren tut man Iteration und Rekursion oftmals, wenn man in Bäumen sucht. (Geschwister in einer Schleife und Kinder rekursiv)
Aber bei einem Baum in verketten Listen könnte man ganz gut iterativ suchen und bräuchte dafür auch keinen Stack, um sich die vorhergehenden Zwischenschritte zu speichern.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (17. Mai 2017 um 06:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.341 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Finde das Maximum einer verketteten Liste (mit rekursiver Funktion)

  Alt 17. Mai 2017, 07:16
Es ist eine Aufgabe des TE. Also vermutlich Schule.
Ob es sinnvoll ist, dass mit einer einfach verketteten Liste zu machen, kann man in Frage stellen.

Ich habe die Funktion mal schnell fertig gemacht (mir war gerade danach):
Delphi-Quellcode:
function ZeigListMax (inRefAnfang : tRefListe) : tRefListe;
begin
  Result := inRefAnfang;
  if inRefAnfang <> nil then
  begin
    if inRefAnfang^.next <> nil then
    begin
      if inRefAnfang^.info >= ZeigListMax(inRefAnfang^.Next).info then
      begin
        Result := inRefAnfang;
      end
      else
      begin
        Result := ZeigListMax(inRefAnfang^.Next);
      end;
    end;
  end;
end;
Nicht hübsch, aber sollte funktionieren und ohne Schleifen.

Übrigens ist der doppelte Aufruf um Hauptprogramm so nicht erforderlich.
Peter
  Mit Zitat antworten Zitat
DesWeeedert

Registriert seit: 16. Mai 2017
7 Beiträge
 
#4

AW: Finde das Maximum einer verketteten Liste (mit rekursiver Funktion)

  Alt 17. Mai 2017, 18:03
Hallo!

Ich habs tatsächlich auch selber geschafft, glaube ich:

Code:
function ZeigListMax (inRefAnfang : tRefListe) : tRefListe;
  { bestimmt rekursiv einen Zeiger auf das Listenelement mit
    der groessten Zahl }
   
   begin
      if inRefAnfang = nil then
         ZeigListMax := nil
      else
         if inRefAnfang^.next = nil then
            ZeigListMax := inRefAnfang
         else
         begin
            if inRefAnfang^.info < (ZeigListMax(inRefAnfang^.next)^.info) then
               ZeigListMax := ZeigListMax(inRefAnfang^.next)
            else
               ZeigListMax := inRefAnfang;
         end;      
   end;
Ist ein bisschen anders als die Lösung von Jasocul, aber sollte auch funktionieren.

Nochmal vielen Dank euch allen für die Hilfe =)
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
743 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Finde das Maximum einer verketteten Liste (mit rekursiver Funktion)

  Alt 17. Mai 2017, 18:42
Komplett absurde Aufgabe. Wer solche Aufgaben stellt sollte selbst noch einmal die Schule besuchen .
Das ist etwa gleich, wie wenn eine klare Brühe serviert wird und du die Gabel zum Essen verwenden sollst.
Michael Gasser
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.202 Beiträge
 
Delphi 12 Athens
 
#6

AW: Finde das Maximum einer verketteten Liste (mit rekursiver Funktion)

  Alt 17. Mai 2017, 18:48
Lernen?
Querdenken und was auch mal mit unpassenderen Mitteln lösen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
743 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Finde das Maximum einer verketteten Liste (mit rekursiver Funktion)

  Alt 17. Mai 2017, 21:59
Zitat:
Lernen?
Querdenken und was auch mal mit unpassenderen Mitteln lösen.
Wenn ein Lehrer andere lehrt falsche Mittel zur Lösung einer Aufgabe einzusetzen, dann ist der Lerneffekt irgendwo bei -1000.

Ich nutze für mathematische Probleme (Knotentheorie, Spieltheorie u.s.w.) sehr oft eine Rekursion. Aber für eine Suche nach Listenelementen, welche via Zeiger(!) miteinander verbunden sind ist die Verwendung einer Rekursion absoluter Nonsens [keine Angst: ich schreib nicht nochmal hier rein ]. Querdenken immer - aber verquer...

https://de.wikipedia.org/wiki/Rekursion
Michael Gasser
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Finde das Maximum einer verketteten Liste (mit rekursiver Funktion)

  Alt 18. Mai 2017, 05:20
Lernen?
Querdenken und was auch mal mit unpassenderen Mitteln lösen.
Ja, dann kommen Programme auf den Markt, bei der ein einfacher Terminkalender 3 GB Hauptspeicher und min. ein I7 benötigt wird.

Sorry, aber bevor man das Querdenken erlernt, sollte man erstmal die richtigen Lösungsansätze erlernen. Erst, wenn man damit nicht weiterkommt, kann man Querdenken.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.765 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Finde das Maximum einer verketteten Liste (mit rekursiver Funktion)

  Alt 17. Mai 2017, 07:15
Eine Rekursion ist bei einer einfach verketteten Liste überhaupt nicht nötig.
Das ist der Punkt den ich auch nicht verstehe.
Das Schulaufgaben nicht immer das absolut nötige wiedergeben, sollte doch nun wirklich Allgemeinwissen sein.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  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 17:13 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