[VBA ] bisection 的 recursive

看板Visual_Basic作者 (Luke)時間15年前 (2010/10/17 21:53), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串1/3 (看更多)
如題,因為之前老師叫我們用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

10/17 23:31, , 1F
將If (xm <> 0.001) Then 改為Do...until...
10/17 23:31, 1F

10/17 23:33, , 2F
但是這樣不就是迴圈了嗎@@
10/17 23:33, 2F

10/18 00:02, , 3F
讓他多跑幾次就可以觀察到遞回的效果了...
10/18 00:02, 3F

10/18 09:20, , 4F
=口=
10/18 09:20, 4F
文章代碼(AID): #1Ckl_HB6 (Visual_Basic)
文章代碼(AID): #1Ckl_HB6 (Visual_Basic)