作者stator (別急著吃棉花糖)
看板Visual_Basic
標題[VB6 ] 請問遞迴的看法該怎麼看呢?
時間Sun Jul 24 01:27:50 2011
自己為了測試遞迴原理,希望能徹底了解。但以下的程式,不懂是怎麼跑法
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