Egal, ob Schleifen oder Rekursionen, ein Goto zum Verlassen des ganzen Konstrukts ist unnötig.Captn. Jinguji hat geschrieben:Wer hat denn unbedingt von Schleifen gesprochen ?PMV hat geschrieben:Das macht man aber mit einer Prozedur und keiner Schleife.Captn. Jinguji hat geschrieben:Öhmmm rekursives Abklappern von Filesystemen z.B. ?
Bei Konstrukten wie diesem hier kann man sich das Goto ganz einfach durch setzen richtiger Abbruchbedingungen sparen (Pseudocode):
Code: Alles auswählen
Procedure scan()
While scannen
If noch_mehr_zu_scannen
scan()
Else
Goto raus_hier
EndIf
Wend
EndProcedure
scan()
raus_hier:
In Fällen wie diesem ein Goto zum verlassen einer Rekursion einzusetzen, halte ich wie andere hier auch, für "schlechten" Programmierstil. Was machst du denn, wenn diese Prozedur die Größe in Bytes eines Verzeichnisses inklusive Unterverzeichnisse zurückgeben soll? Zählst du dann die Größe in einer globalen Variable mit und springst da bei Bedarf mit Goto raus? LOL. Das macht man "anständigerweise" mit geschützen Variablen (Protected) und einem ProcedureReturn am Ende der Prozedur. Das zeigt auch, dass man die Rekursion 100%ig verstanden hat.