AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stack-Overflow abfangen

Ein Thema von Sinthuor · begonnen am 14. Aug 2011 · letzter Beitrag vom 16. Aug 2011
Antwort Antwort
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#1

AW: Stack-Overflow abfangen

  Alt 14. Aug 2011, 23:40
uebergib in jeder rekursion die rekusrionstiefe mit, und brich frühzeitig ab (z.b. tiefe 30)
  Mit Zitat antworten Zitat
Sinthuor

Registriert seit: 14. Aug 2011
3 Beiträge
 
#2

AW: Stack-Overflow abfangen

  Alt 15. Aug 2011, 01:20
uebergib in jeder rekursion die rekusrionstiefe mit, und brich frühzeitig ab (z.b. tiefe 30)
Das war eine super Lösung für mich. Vielen Dank!
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#3

AW: Stack-Overflow abfangen

  Alt 15. Aug 2011, 06:00
uebergib in jeder rekursion die rekusrionstiefe mit, und brich frühzeitig ab (z.b. tiefe 30)
Das war eine super Lösung für mich. Vielen Dank!
Das ist keine Lösung, sondern ein Workaround. Denn wenn ein Weg mal länger als 30 Einheiten sein sollte, findest du ihn mit dieser Methode nicht mehr.
Das Bild hängt schief.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.917 Beiträge
 
Delphi 12 Athens
 
#4

AW: Stack-Overflow abfangen

  Alt 15. Aug 2011, 06:16
Mal abgesehen davon, dass es extrem viel länger dauert, wenn man sich nicht merkt wo man schon war...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Stack-Overflow abfangen

  Alt 15. Aug 2011, 06:47
Bedenkt aber, daß man auch etwas mehr Speicher benötigt, wenn man sich den Weg merkt, da dieses für jede Rekusrionsebene einzeln gepeichert (kopiert und erweitert) werden muß.
Also vorallem, wenn man es mit auf den Stack legen würde.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Stack-Overflow abfangen

  Alt 15. Aug 2011, 12:37
Bedenkt aber, daß man auch etwas mehr Speicher benötigt, wenn man sich den Weg merkt, da dieses für jede Rekusrionsebene einzeln gepeichert (kopiert und erweitert) werden muß. Da hast du einen Denkfehler.
Man muss sich maximal so viel Felder merken wie es insgesamt gibt (nicht alle Kombinationen). Zudem kann man auch noch mit Bits arbeiten (Pro Feld ein Bit) und schon benötigt man gar nicht mehr sooo viel Speicher.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#7

AW: Stack-Overflow abfangen

  Alt 15. Aug 2011, 13:19
Echt? Ich würde der Matrix ein weiteres Feld gönnen (Visited:Boolean).
Betrete ich das Feld, prüfe ich, ob Visited=True, wenn ja, beende ich die Routine, ich war ja schon mal da.
Ansonsten setze ich Visited=True, suche nach weiteren Wegen und nehme aber nur die Nachbarfelder mit ins Boot, die ich noch nicht besucht habe.

Dann rufe ich mich selbst mit allen Nachbarkandidaten rekursiv auf.

Bevor ich die Routine verlasse, setze ich Visited wieder auf False:

Delphi-Quellcode:
Procedure TMatrix.Visit (Source : TPoint; Path : TPath);
Begin
  If Source = FinalDestination then
     Success(Path)
  Else If not Self.Visited[Source] Then begin
    Self.Visited[Source] := True;
    Foreach Neighbor in Source.Neighbors do
      If not Self.Visited[Neighbor] Then
        Visit(Neighbor, Path+Neighbor)
    Self.Visited[Source] := False;
  End
End;
Das Bild hängt schief.
  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 10:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz