求教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)请详细赐教!!! 展开
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)请详细赐教!!! 展开
3个回答
展开全部
输入6
调用fun(6)
If 6 Mod 2=0 Then fun(6/2) 'fun(6/2)=fun(3) 打印出 3
后面
Print x; '打印出 6
调用fun(6)
If 6 Mod 2=0 Then fun(6/2) 'fun(6/2)=fun(3) 打印出 3
后面
Print x; '打印出 6
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
典型的递归调用,对于初学者来说,最好的理解方式就是用函数实际代码去替换展开.上例中:
输入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;
输入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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询