求教VB大神!!!

设有如下Command1的单击事件过程及fun过程:PrivateSubCommand1_Click()DimxAsIntegerx=Val(InputBox("请输入一... 设有如下Command1的单击事件过程及fun过程:
Private Sub Command1_Click()
Dim x As Integer
x=Val(InputBox("请输入一个整数"))
fun(x)
End Sub
Private Sub fun(x As Integer)
If x Mod 2=0 Then fun(x/2)
Print x;
End Sub
执行上述程序,输入6,结果是______。
不懂为什么 答案是 (3 6)请详细赐教!!!
展开
 我来答
半导体XI
2013-09-15 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:131
采纳率:0%
帮助的人:89.5万
展开全部
楼上说的太专业,这样给你说吧:输入6之后先运行fun(6),因为x Mod 2=0 所以执行fun(6/2) ,因为是执行的fun(3),所以先输出的是3,之后从那个if语句之后接着执行,print x;所以输出的是(3 6)
zzhilling
2013-09-16 · TA获得超过2700个赞
知道大有可为答主
回答量:3255
采纳率:45%
帮助的人:1118万
展开全部
输入6
调用fun(6)
If 6 Mod 2=0 Then fun(6/2) 'fun(6/2)=fun(3) 打印出 3
后面
Print x; '打印出 6
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
neuyangjian
2013-09-15 · TA获得超过114个赞
知道答主
回答量:83
采纳率:0%
帮助的人:40.8万
展开全部
典型的递归调用,对于初学者来说,最好的理解方式就是用函数实际代码去替换展开.上例中:
输入6,执行fun(6),展开为:
x=6;
if x mod 2=0 Then
x1=3;'fun(3)展开
If x1 mod 2 Then fun(x1/2);‘因为x1 mod 2为false,因此不再递归下去
Print x1;
end if
Print x;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式