| Autor |
Beitrag |
[r2d2]
![[r2d2] hat insgesamt 97.2% On-Topic und 2.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![[r2d2] hat insgesamt 97.2% On-Topic und 2.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![[r2d2] hat insgesamt 97.2% On-Topic und 2.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![[r2d2] hat insgesamt 97.2% On-Topic und 2.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![[r2d2] hat insgesamt 97.2% On-Topic und 2.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![[r2d2] hat insgesamt 97.2% On-Topic und 2.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![[r2d2] hat insgesamt 97.2% On-Topic und 2.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
Beiträge: 109
WinXP
D5 Enterprise
|
Verfasst: So 03.08.03 12:22
Hi
Ist es ohne weiteres möglich eine Porcedur durch sich selbst mehrmals aufrufen zu lassen? Muss man dabei irgendetwas beachten oder sollte es dabei eigentlich keine Probs geben? 
|
|
Tryer
      
Beiträge: 226
Erhaltene Danke: 7
|
Verfasst: So 03.08.03 12:30
Normalerweise sollte es keine Probleme geben.. aber:
Irgendwann sind soviele Rücksprungadressen auf dem Stack abgelegt das dieser überläuft.. das hast Du die maximale Rekursionstiefe erreicht und es kommt zur Fehlermeldung (Stack overflow).
Das passiert aber eigentlich nur dann wenn man in eine Endlosschleife gerät, also keine korrekte Abbruchbedingung existiert.
MfG,
Tryer
|
|
maximus
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: So 03.08.03 14:43
um das noch zu vervollständigen: Dein vorhanben nent man 'rekursion' und kann für äusserst leistungsfähige/effiziente algorythmen verwendet werden. Rekursion ist eines meiner liebling konzepte beim programmieren 
_________________ mfg.
mâximôv
|
|
Tryer
      
Beiträge: 226
Erhaltene Danke: 7
|
Verfasst: So 03.08.03 14:59
| maximus hat folgendes geschrieben: | Rekursion ist eines meiner liebling konzepte beim programmieren  |
Damit bist Du nicht allein
MfG,
Tryer
|
|
UC-Chewie
      
Beiträge: 531
WinXP
D5 Ent
|
Verfasst: So 03.08.03 17:30
| Tryer hat folgendes geschrieben: | | Das passiert aber eigentlich nur dann wenn man in eine Endlosschleife gerät, also keine korrekte Abbruchbedingung existiert. |
Na ja, nicht unbedingt nur dann. Der Stack eines Prozesses ist soweit ich weiß, sofern nicht anders angegeben, 1 MB groß. Da kann der Inhalt von ca. 262000 Registern abgelegt werden. Sagen wir mal, bei jeder erneuten Rekursion werden 2 4Byte-Variablen (was recht wenig) ist, so läuft der Stack nach 131000 Operationen über. Stell dir vor, du durchsuchst eine Festplatte mit 100 GB, die voll sind, da kommen schnell mal 131000 Dateien & Ordner zusammen.
Mann sollte also bevor man Rekursion benutzt, überlegen, wie viele Schritte maximal man etwa brauchen könnte.
Aber ansonsten ist Rekursion eine Methode, mit wenig Code viel zu machen, z.B. in Baumstrukturen, wo man mit wenigen Zeilen eine beliebig (na ja, durch die Größe des Stack begrenzte) große Baumstruktur leeren kann.
_________________ Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
|
|
Tryer
      
Beiträge: 226
Erhaltene Danke: 7
|
Verfasst: So 03.08.03 17:58
| UC-Chewie hat folgendes geschrieben: | Stell dir vor, du durchsuchst eine Festplatte mit 100 GB, die voll sind, da kommen schnell mal 131000 Dateien & Ordner zusammen.
Mann sollte also bevor man Rekursion benutzt, überlegen, wie viele Schritte maximal man etwa brauchen könnte. |
Wobei Du vergisst:
Der Stack wird auch immer wieder abgebaut, interessant ist also nur die maximale Schachtelungstiefe der Verzeichnisse, das hat nichts mit der Anzahl der Dateien insgesamt zu tun und sollte kein Problem darstellen.
MfG,
Tryer
|
|
UC-Chewie
      
Beiträge: 531
WinXP
D5 Ent
|
Verfasst: So 03.08.03 18:01
Ja, richtig, daran hab ich bei der Hitze nicht gedacht. Ändert aber nix am Problem, es kann trotzdem passieren, dass der überläuft.
_________________ Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Mo 04.08.03 09:13
Ja, nach deiner Beschreibung aber nur, wenn er eine Verzeichnisstruktur mit 131000 Unterordnern hätte!
Bei einer rekursiven File-Suche sollte also in keinem Fall ein Stack-Overflow auftreten (vorrausgesetzt es ist sauber programmiert)!
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
UC-Chewie
      
Beiträge: 531
WinXP
D5 Ent
|
Verfasst: Mo 04.08.03 10:24
Hmm, wenn ich das so les, klingt das wohl logisch. Also Stack-Overflow höchstens dann, wenn pro Rekursionsschritt 100 kb gepusht werden. 
_________________ Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
|
|
Tryer
      
Beiträge: 226
Erhaltene Danke: 7
|
Verfasst: Mo 04.08.03 11:46
Ein Beispiel wäre das Löschen einer einfach verketteten Liste, wo man per Rekursion bis zum letzten Element geht um dann auf dem Rückweg alle Elemente aufzulösen.
Dieser Fall ist aber auch fast auszuschliessen da es imho Schwachsinn wäre derart viele Elemente in einer einfach verketteten Liste zu speichern.
Bleibt also wirklich nur ein Fehler im Algorithmus um den Stackoverflow auszulösen
MfG,
Tryer
|
|