看板 Visual_Basic 關於我們 聯絡資訊
自己為了測試遞迴原理,希望能徹底了解。但以下的程式,不懂是怎麼跑法 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
MOONRAKER:自己模擬走一遍便知 07/24 06:45
MOONRAKER:a>=2的時候b=6在else區內根本沒執行到,印出0很合理 07/24 06:46
MOONRAKER:而且這實在不算遞迴測試…遞迴的威力都沒用到 07/24 06:48
MOONRAKER:至少可以帶一個reclvl參數來確定是哪一層輸出的 07/24 06:48
MOONRAKER:只看出你對if的執行順序有誤解而已 07/24 06:49
stator:請問前輩,當I=1去執行call test後,印完後不是要回到b=6 07/24 08:38
stator:在I=1的時候,要CALL之前,不是應該會把下一行壓入stack 07/24 08:45
stator:抱歉,我誤解了~沒問題了~謝謝前輩 07/24 10:48