[VB6 ] 請問遞迴的看法該怎麼看呢?

看板Visual_Basic作者 (別急著吃棉花糖)時間14年前 (2011/07/24 01:27), 編輯推噓0(008)
留言8則, 2人參與, 最新討論串1/1
自己為了測試遞迴原理,希望能徹底了解。但以下的程式,不懂是怎麼跑法 Private Sub Command1_Click() s = 1 Call test(s) End Sub Sub test(a) Dim b As Integer If a >= 2 Then Print a Else For i = 1 To 2 Call test(a * 3) b = 6 Next i End If Print "我是" & b End Sub 印出來的結果是--3 我是0 3 我是0 我是6 我的疑問: 當跑完第1個i迴圈後,這時b不是應該為6了嗎? 為什麼再i=2呼叫test(a*3)時,第2個卻是會印出我是0呢? 以上謝謝各位前輩的指導 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.11.175.167

07/24 06:45, , 1F
自己模擬走一遍便知
07/24 06:45, 1F

07/24 06:46, , 2F
a>=2的時候b=6在else區內根本沒執行到,印出0很合理
07/24 06:46, 2F

07/24 06:48, , 3F
而且這實在不算遞迴測試…遞迴的威力都沒用到
07/24 06:48, 3F

07/24 06:48, , 4F
至少可以帶一個reclvl參數來確定是哪一層輸出的
07/24 06:48, 4F

07/24 06:49, , 5F
只看出你對if的執行順序有誤解而已
07/24 06:49, 5F

07/24 08:38, , 6F
請問前輩,當I=1去執行call test後,印完後不是要回到b=6
07/24 08:38, 6F

07/24 08:45, , 7F
在I=1的時候,要CALL之前,不是應該會把下一行壓入stack
07/24 08:45, 7F

07/24 10:48, , 8F
抱歉,我誤解了~沒問題了~謝謝前輩
07/24 10:48, 8F
文章代碼(AID): #1EAmIPP- (Visual_Basic)
文章代碼(AID): #1EAmIPP- (Visual_Basic)