关于一道VB计算题

来源:百度知道 编辑:UC知道 时间:2024/06/23 07:45:30
Private Sub Form_Click()
Dim a As Integer, b As Integer
a = 2
Do While b < 3
a = a + 2
If fun(a) Then
Print a
b = b + 1
End If
Loop
End Sub

Private Function fun(ByVal a As Integer) As Boolean
If a / 2 = Int(a / 2) Then
fun = fun(a / 2)
Else
If a = 1 Then fun = True
End If

End Function
求窗体上三行的输出,哪位高手来解答一下,详细过程。。
这中间的递归怎样处理??
结果是4,8,16
在这个程序中fun的取值刚开始为什么是false,后来又是怎么变化的。。

分别是4,8,16
If a / 2 = Int(a / 2) Then
fun = fun(a / 2)'当a为偶数是,则fun = fun(a / 2)
Else
If a = 1 Then fun = True'当a为奇数,只有等于1时fun才为true。
End If

我就结合你的题目说说具体如何递归。首先,得a=4,判断fun(a)过程。有递归得:fun(4)=fun(2).fun(2)=fun(1)=true.故判断为“真”执行print a语句。然后循环执行a=6,依上述操作,类似判断。运行结果为:4 6 8当然,要三行显示。