![]() |
Stack Überlauf bei Rekursion
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:
MfG Andre
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; ich hoffe ihr könnt mir helfen.. |
Re: Stack Überlauf bei Rekursion
Öhm - ist der rekursive Aufruf von kaufen nicht unsinnig und -nötig? Du solltest ihn einfach entfernen können.
|
Re: Stack Überlauf bei Rekursion
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.
|
Re: Stack Überlauf bei Rekursion
ja danke es reicht "kaufen" eifach rauszunehmen .. war total unsinnig das da reinzuschreiben
Vielen Dank für die schnellen Antworten! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:37 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