作者tp6b123 (Luke)
看板Visual_Basic
标题[VBA ] bisection 的 recursive
时间Sun Oct 17 21:53:16 2010
如题,因为之前老师叫我们用vba写出bisection,但是想说不知道有没有办法
用递回的方式去写,递回也只知道是呼叫自己本身,看了维基里面写了
一个递回的阶乘,想了半天想不出来,所以跑来这边问问大家@@
下面是我的程式码,可是只跑一次,为什麽咧= =
Sub bimain()
Dim xl As Double, xr As Double, xm As Double
Dim i As Integer
xl = 0#
xr = 1#
xm = (xl + xr) / 2#
i = 0
If (xm <> 0.001) Then
xm = condition(xl, xr)
MsgBox xm
i = i + 1
ElseIf (i > 10) Then
Stop
End If
End Sub
Function condition(xl As Double, xr As Double) As Double
Dim xm As Double
xm = (xl + xr) / 2#
If (infun(xl) * infun(xm) = 0 Or infun(xm) * infun(xr) = 0) Then
Stop
ElseIf (infun(xl) * infun(xm) < 0) Then
xr = xm
ElseIf (infun(xm) * infun(xr) < 0) Then
xl = xm
End If
condition = xm
End Function
Function infun(x As Double) As Double
infun = x ^ 3 + 3 * x - 1
End Function
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.184.51.226
1F:推 Marty:将If (xm <> 0.001) Then 改为Do...until... 10/17 23:31
2F:→ tp6b123:但是这样不就是回圈了吗@@ 10/17 23:33
3F:推 Marty:让他多跑几次就可以观察到递回的效果了... 10/18 00:02
4F:→ tp6b123:=口= 10/18 09:20