急!VB的一道题!!!求详细解答过程

运行下面的程序,单击Cmd1,窗体上显示的第一行是___(7)___,第二行是___(8)___,,最后一行是___(9)___。OptionExplicitPrivat... 运行下面的程序,单击Cmd1,窗体上显示的第一行是___(7)___,第二行是___(8)___ ,,最后一行是___(9)___。
Option Explicit
Private Sub Cmd1_Click()
Dim A As Integer
A=3
Call Sub1(A)
Print A
End Sub
Private Sub Sub1(X As Integer)
X=X*2+1
If X<10 Then
Call Sub1(X)
End If
X=X*2+1
Print X
End Sub
展开
 我来答
zss_2010
2011-03-12 · TA获得超过332个赞
知道小有建树答主
回答量:172
采纳率:50%
帮助的人:99.8万
展开全部

这道题烦人的地方是程序自己调用自己又叫递归调用,文字分析如下:

1、程序开始执行A=3,调用sub1,传地址方式,相当于对A操作;

2、进入sub1,A=A*2+1,A=7,判断A<10,又调用sub1

3、又进入sub1,A=A*2+1,A=15,判断A>10,执行A=A*2+1,print A 打印第一行31

4、结束自己调用自己后执行A=A*2+1,print A 打印第行二行63

5、返回主程序执行print A 打印第行三行63

如果用图示的办法,那更是一目了然!剪一个递归调用的示意图,帮你理解!

百度网友f73bdb1
2011-03-11 · TA获得超过2175个赞
知道小有建树答主
回答量:1077
采纳率:90%
帮助的人:341万
展开全部
第一行是31,第二行是63 ,最后一行是63。

调试,按F8,很清楚的能看懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chiefzjh
2011-03-11 · TA获得超过9083个赞
知道大有可为答主
回答量:7013
采纳率:37%
帮助的人:2130万
展开全部
31
63
63
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式