第1个回答 2014-02-13
这是发生递归调用的程序:
在private sub command1_click()里的fun(x),将x=6作为参数,调用自定义过程fun,进入fun;
执行
if x mod 2=0 then fun(x/2) '应该是0,不是字母o吧?
由于x = 6,所以满足x mod 2=0,执行fun(x/2),用3调用自定义过程fun,这里是在过程fun中再一次去调用自定义过程fun,即自己调用自己,叫做递归调用。进入fun;
执行
if x mod 2=0 then fun(x/2)
这次不满足,就执行输出,3
然后要返回调用它的地点,就是返回上一次的 fun处,执行调用语句的下一条语句,就是输出语句,所以输出6。
所以,在窗体上看到的是
3 6
补充语句,关于递归,你可以搜索以下主题:
在VB程序中执行递归调用的执行原理以及过程说明:
看看我的文章。本回答被提问者采纳
第2个回答 2014-02-13
这是因为递归过程调用的结果,其核心语句就是fun(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能被2整除,所以就递归调用fun(3);
3不能被2整除,所以就首次打印 3 ,然后返回。返回后又遇到打印语句,本次打印的是 6 ,再次返回就结束了command1_click()的调用。
所以,总的输出就是:
3 6