AGB  ·  Datenschutz  ·  Impressum  







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

Stack Überlauf bei Rekursion

Ein Thema von C0lumb0 · begonnen am 27. Sep 2006 · letzter Beitrag vom 27. Sep 2006
Antwort Antwort
C0lumb0

Registriert seit: 8. Mär 2006
7 Beiträge
 
#1

Stack Überlauf bei Rekursion

  Alt 27. Sep 2006, 20:25
Hallo Delphifreunde,
ich schreibe gerade ein Programm, wo ich eine sehr tiefe Rekursion verwende (über 100000!!) Das Programm gibt mir dann einen Stack Überlauf an und kann die Rekusrsion deshalb nicht ausführen.
Wie kann man das verhindern oder wie kann man den Stack erhöhen (mein Arbeitsspeicher von 1GB dürfte doch ausreichen). Ich weiß ja dass es keine Endlosrekursion ist sondern zum Ergebnis führt somit muss es ja nicht abgebrochen werden!

Hier mein Code:
Delphi-Quellcode:
procedure Tform1.kaufen;
begin
  while not allesgekauft do
    begin
      inc(monat);
      kontostand:=budget+kontostand;
      for i:=elemente-1 downto 0 do
        begin
          if A[i]<=kontostand then
           begin
            kaufe(i);
           end;
        end;
        kontostand:=kontostand2;
        kontostand2:=0;
      if Kontostand>=wertelemente then
       begin
         allesgekauft:=true;
         edit3.Text:=inttostr(monat);
       end;
      kaufen;
    end;
end;

procedure TAufgabe1.kaufe(Enummer:integer);
begin
  Kontostand:=Kontostand-A[Enummer];
  Kontostand2:=kontostand2+A[Enummer];
end;
MfG Andre

ich hoffe ihr könnt mir helfen..
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Stack Überlauf bei Rekursion

  Alt 27. Sep 2006, 20:34
Öhm - ist der rekursive Aufruf von kaufen nicht unsinnig und -nötig? Du solltest ihn einfach entfernen können.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Stack Überlauf bei Rekursion

  Alt 27. Sep 2006, 20:37
du kannst zum einen die Stackgröße in den Projektoptionen einstellen und zum anderen kannst du dir auch selbst einen Stack nachbauen so das du nicht wirklich eine rekursion hast sonder innerhalb einer Procedure das nur simulierst.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
C0lumb0

Registriert seit: 8. Mär 2006
7 Beiträge
 
#4

Re: Stack Überlauf bei Rekursion

  Alt 27. Sep 2006, 21:21
ja danke es reicht "kaufen" eifach rauszunehmen .. war total unsinnig das da reinzuschreiben

Vielen Dank für die schnellen Antworten!
  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 05:12 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