为简单起见,Smallbasic 只有全局变量。它没有局部变量或参数。
尽管这使得教授或学习它变得更简单,但它也使一些事情变得复杂,比如递归函数。我很难在 smallbasic 中创建一个简单的递归函数,不得不使用手动堆栈。这可行,但它使它变得更加复杂,并且与简单的最初主要目标相矛盾!
这就是我可以编写阶乘的方式:
n = 5
ind = 1
fact()
TextWindow.WriteLine("fact(5)=" + f)
Sub fact
If n = 1 Then
f = 1
Else
ind = ind+1
keepn[ind] = n
n = n-1
fact()
f = f * keepn[ind]
ind = ind-1
EndIf
EndSub
注意:我刚刚写了它,它可能有错误。
你看图片。我正在手动创建一个堆栈并使用它来模拟局部变量并将其用于递归。
有没有一种简单的方法来创建这个递归函数?