作者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
1F:→ MOONRAKER:自己模拟走一遍便知 07/24 06:45
2F:→ MOONRAKER:a>=2的时候b=6在else区内根本没执行到,印出0很合理 07/24 06:46
3F:→ MOONRAKER:而且这实在不算递回测试…递回的威力都没用到 07/24 06:48
4F:→ MOONRAKER:至少可以带一个reclvl参数来确定是哪一层输出的 07/24 06:48
5F:→ MOONRAKER:只看出你对if的执行顺序有误解而已 07/24 06:49
6F:→ stator:请问前辈,当I=1去执行call test後,印完後不是要回到b=6 07/24 08:38
7F:→ stator:在I=1的时候,要CALL之前,不是应该会把下一行压入stack 07/24 08:45
8F:→ stator:抱歉,我误解了~没问题了~谢谢前辈 07/24 10:48