作者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