Seite 2 von 2

Verfasst: 03.04.2005 14:11
von NicTheQuick
Komischerweise funktioniert eine Rekursion aber problemlos.

Code: Alles auswählen

a = 10

Gosub TestGosub

Debug a

End

TestGosub:
  a - 1
  If a > 1
    Gosub TestGosub
  EndIf
Return

Verfasst: 03.04.2005 15:08
von Falko
Rekursiv? Dann ist es mit Goto ähnlich.

Code: Alles auswählen

a = 10

Gosub TestGosub

Debug a

End

TestGosub:
  Debug a
  a - 1
  If a > 1
    Goto TestGosub
  EndIf
Return

Verfasst: 03.04.2005 15:55
von freedimension
Die Rekursion mit Prozeduren zeichnet sich dadurch aus, dass du für jeden Prozeduraufruf "frisch" deklarierte Variablen zur Verfügung hast, dir also Werte rückwirkend auf's Einfachste merken kannst. Das a aus deinem Beispiel wird ja durchweg benutzt.
Versucht einmal mit Gosub eine wirklich nützliche rekursive Funktion zu schreiben! Da musst du alle wichtigen Werte selber auf einen Stack legen und verwalten.

Verfasst: 03.04.2005 16:05
von Kaeru Gaman
freedimension hat geschrieben:Da musst du alle wichtigen Werte selber auf einen Stack legen und verwalten.
sic! :allright:

Verfasst: 03.04.2005 16:05
von ts-soft
Die Zeit, die man durch Gosub (UrBefehl aus den 60-ern) spart, die nächsten 50 Jahre addieren, es wird nicht reichen ne Tasse Kaffee zu trinken :mrgreen:

Verfasst: 03.04.2005 16:10
von Kaeru Gaman
im endeffekt ist ja GOSUB nix weiter als ein wrapper des ASM-Befehls JumpToSubroutine...

Verfasst: 03.04.2005 18:47
von Falko
Was sind dann wohl die anderen PB-Befehle? :mrgreen:

Verfasst: 03.04.2005 18:50
von Kaeru Gaman
die anderen befehle sind mehr oder weniger komplexe ASM-Routinen.

lediglich GOTO und GUSUB entsprechen fast 1:1 ihren ASM-Kollegen.