我正在寻找一种将函数作为参数传递的方法。
假设我有一个根查找算法的功能。此函数查找另一个函数f()的根。 现在我希望能够将任何函数作为参数传递,以便我可以使用具有不同函数的rootFinder函数(即我定义的任何n函数)
如何将f()及其相应的输入作为参数传递?
这是我的代码来说明问题。我使用f()和functionInputs作为占位符。
Function rootFinder(ByVal lowBound As Double, ByVal upBound As Double, ByVal f() As String, ByVal functionInputs As String)
'this function uses the
Dim xmid As Double, xold As Double, tol As Double
'accuary of algorithm
tol = 0.001
If f(lowBound,functionInputs) * f(upBound,functionInputs) > 0 Then
MsgBox "choose other bounds"
Else
xold = lowBound
Do
xmid = (lowBound + upBound) / 2
If Abs((xmid - xold) / xmid) < tol Then
Exit Do
End If
xold = xmid
If f(lowBound,functionInputs) * f(xmid,functionInputs) > 0 Then
lowBound = xmid
Else
upBound = xmid
End If
Loop
rootFinder = xmid
End If
End Function
答案 0 :(得分:0)
f()&#34;功能&#34; rootFinder函数作为参数实际上是一个字符串数组,就像你声明它一样。我不认为你可以像你想要的那样将函数作为参数传递。为什么不使用函数的实际名称并正常调用它(不试图将其作为参数传递)?
(你的算法虽然很聪明,但也很光滑。我希望你能让它运转起来!)