招食堂厨师:[VB]是否可以在函数中调用自己?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 00:46:11
VB 例如一个用户函数f:

public function f(x as single) as single
...
a = f(a) <--是否能在这里调用f本身?
...
end function

我记得好象不可以,会出错;但这个操作好象是叫"迭代"吧?(记不清了) 如果实现将很好用,该怎样实现呢?
只有一楼正经

234楼都什么菜鸟

可以使用,您大约记错了。

public function f(x as single) as single
...
if a = 1 then
f = 2
else
f = 0
end if

a = f(a) <--这样a就得2了
...
end function

VB完全可以使用递归算法,在函数体f内可以出现函数f本身,以下求阶乘的程序在VB6通过

Public Function f(x As Integer) As Integer

If x = 1 Then
f = 1
Else
f = x * f(x - 1)
End If

End Function

Private Sub Command1_Click()
MsgBox f(5)

End Sub

如果把f = x * f(x - 1)改成f = x * f(x)或f = x * f(x + 1),明显不合理,但是VB也会通过,但是执行的时候会产生堆栈溢出的错误

可以
但小心,调用自己有可能造成无限循环,所以在过程\函数中要有跳出的语句

个人认为不可以,但具体怎么用就不知道了。

可以

可以