ZitatDie Sache wäre wohl eleganter, wenn man einen schlichten Sprungbefehl hätte ("GOTO").
Leider haben wir den nicht - und der Stack ist begrenzt. Deshalb gefällt mir die Idee nicht.
Das "GOTO" bringt dir nicht wirklich etwas, denn den Stack musst du so oder so "bereinigen". Solange nur die Rücksprungadressen auf dem Stack liegen und etwaige Variablen innerhalb der (dann sehr einfachen) Funktion benutzt werden, würde ein "GOTO" in der untersten Rekursionsebene gefolgt von einem "Schieb den Stackpointer XXXX Bytes nach oben, um den Speicher freizugeben" die Rekursion beenden.
Wenn du allerdings, und das kommt in diversen rekursiv aufgerufenen Funktionen häufig vor, das Ergebnis des Funktionsaufrufs innerhalb der Funktion (nach deren Rückkehr) weiterverarbeitest, bringt das GOTO nichts! Denn dann muss die Rekursion komplett vonn innen nach aussen abgearbeitet werden, Stichwort rekursive Dateisuche über alle Verzeichnisse.
*OT on*
Zitat von peethebeeGoto-Code ist einfach undebugbar
Da sage ich nur:"Beschissen dokumentierter Code ist undebugbar!", völlig unabhängig davon, ob nur ein einziges GOTO verwendet wurde!
Ich weiss nicht, wieso Gott und die Welt was gegen GOTO haben, ich habe weder mit den ersten BASIC-Dialekten noch mit meinem BASIC-programmierbaren Taschenrechner noch bei Batch-Dateien irgendwelche Probleme (damit gehabt). Es ist ein Sprungbefehl wie so viele andere auch, btw. kenne ich keinen einzigen Prozessor, der etwas anderes als ein GOTO (in Form eines Sprungbefehls) verwendet, wobei man fairerweise sagen muss, dass es auch etwas ähnliches wie do/loop gibt, langsamer allerdings ![]()
Wenn AutoIt ein GOTO hätte, wäre es dann eine "schlechtere" Programmiersprache?
*OT off*