Hallo,
ich würde gerne wissen wie man eine Rekursion während ihres Laufes beenden kann, ungefähr so als ob ein Fehler auftreten würde, nur halt ohne Fehler
BlackJack, du hattest in meinem anderen Thread erzählt, dass das mit Ausnahmen geht, ich würde mich freuen, wenn du das nochmal näher erläuterst.
Rekursion beenden
-
- User
- Beiträge: 196
- Registriert: Sonntag 1. Januar 2006, 20:12
- Wohnort: aus dem hohen Norden....
Hallo daniels7,daniels7 hat geschrieben:Hallo,
ich würde gerne wissen wie man eine Rekursion während ihres Laufes beenden kann, ungefähr so als ob ein Fehler auftreten würde, nur halt ohne Fehler
BlackJack, du hattest in meinem anderen Thread erzählt, dass das mit Ausnahmen geht, ich würde mich freuen, wenn du das nochmal näher erläuterst.
BlackJack schrieb aber auch, dass man ohne weitere Informationen keine genauen Angaben machen kann. Damit könnte er z. B. genauso wie ich Dir bei Deinem Tkinter-Problem prophezeit hatte, ein kleines Codebeispiel gemeint haben.
es ist schwierig euch was konkretes zu geben, mein Programm umfasst mehrere Seiten und ein Einzelteil ist schwer zu verstehen, aber ich versuchs mal:
also das ist jetzt ein Auszug aus meinem Programm, ich habe die Stelle kommentiert, wo man es abbrechen müsste, damit es ordnungsgemäß funktioniert.
Code: Alles auswählen
def replace_absatz(text):
x=0
y=1
b=[]
for i in range(len(text)):
if text[x:y]=='\\':
ergebnis.insert(INSERT,text[:x])
ergebnis.insert(INSERT,'\n')
b=text[y+1:]
replace_absatz(b)
x=x+1
y=y+1
#wenn ich hier nen Fehler einbaue funktioniert das Programm
ich kann dir nicht genau sagen warum, aber wenn das Programm an der markierten Stelle abbricht ist es perfekt. Da wäre sowas wie der exit()-Befehl gut, nur eben für die Methode, und nicht für das ganze Programm.
Sachen wir return funktionieren an der Stelle nicht.
Sachen wir return funktionieren an der Stelle nicht.
Schau Dir die `replace()`-Methode auf Zeichenketten an und vergiss diese kranke rekursive "Lösung".
Rekursion sollte man in Python wirklich nur für rekursive Probleme benutzen und nicht als Ersatz für einfache Schleifen, oder wie in diesem Fall fertige Funktionen oder Methoden.
Rekursion sollte man in Python wirklich nur für rekursive Probleme benutzen und nicht als Ersatz für einfache Schleifen, oder wie in diesem Fall fertige Funktionen oder Methoden.
Sorry, soweit hatte ich mir das komische Konstrukt nicht angeschaut. Das klingt nach einem Fall für das `re`-Modul.
Code: Alles auswählen
In [58]: print re.sub(r'\\.', '\n', r'Test a\xTest b')
Test a
Test b
Zuletzt geändert von BlackJack am Montag 31. Dezember 2007, 12:28, insgesamt 1-mal geändert.
Um dir trotzdem mal zu zeigen, wie man eine Rekursive Funktion abbricht hier ein ganz simples Beispiel:
Du brauchst also eine Abbruchbedingung. Wenn diese Eintritt kommt es zu keinem weiteren rekursiven Aufruf mehr.
Code: Alles auswählen
def fak(x):
if x==1:
return 1 #Abbruch der Rekursiven Funktion
else:
return x*fak(x-1)
mfg
Thomas :-)
Thomas :-)
Wenn man möchte kann man das so sehen, aber in der Schleife ist das für mich einfach kein Rekursionsanker. Es verhindert ja auch nicht die unerwünschte weitere Verarbeitung.