vb题sub过程

来源:百度知道 编辑:UC知道 时间:2024/09/20 07:00:22
如下代码,求具体运算过程及结果,请高手帮忙:
Option Explicit

Private Sub Form_Click()
Dim a As Integer, b As Integer
a = 90: b = 36
Call ab(a, b)
Print a, b
End Sub

Private Sub ab(x As Integer, y As Integer)
If y = 0 Then
Print x
Else
Call ab(y, x Mod y)
End If
End Sub

1、a、b赋值后,a=90,b=36,运行Call(90,36)
2、运行sub ab(),这时x=90,y=36,执行判断语句if y=0时不成立,则运行else后面的语句:Call ab(y, x Mod y) ,这时Y=36,x mod y=90 mod 36=18,实际上运行的是Call(36,18)
3、第二次运行sub ab()时,x=36,y=18,再判断y=0时仍不成立,又运行else后面的语句:Call ab(y, x Mod y) ,这时Y=18,x mod y=36 mod 18=0,实际上运行的是Call(18,0)
4、第三次运行sub ab()时,x=18,y=0,再判断y=0时成立,则运行Print x,即打印x的值18,打印完后换了一行。就去执行end if 之后的end sub语句了。
5、经过两次返回后,来到了第一次调用sub ab()语句的下面一句:Print a, b
,因为上面所有过程中均没有重新对a、b赋值,所以仍打印出a的值90和b的值36。
具体打钱的结果是:
18
90 36

函数为function
18