VB Private Sub Command1_Click()Dim x As Integerx = 15768Print pt(x)End SubPrivate Function pt(x As Integer)If x < 100 Thenpt = x Mod 100Elsept = pt(x \ 100) * 10 + x Mod 10Print ptEnd IfEnd Function为什么 打印三次结果分别是 17 178 178

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/08 06:51:33

VB Private Sub Command1_Click()Dim x As Integerx = 15768Print pt(x)End SubPrivate Function pt(x As Integer)If x < 100 Thenpt = x Mod 100Elsept = pt(x \ 100) * 10 + x Mod 10Print ptEnd IfEnd Function为什么 打印三次结果分别是 17 178 178
VB
Private Sub Command1_Click()
Dim x As Integer
x = 15768
Print pt(x)
End Sub
Private Function pt(x As Integer)
If x < 100 Then
pt = x Mod 100
Else
pt = pt(x \ 100) * 10 + x Mod 10
Print pt
End If
End Function
为什么 打印三次结果分别是 17 178 178

VB Private Sub Command1_Click()Dim x As Integerx = 15768Print pt(x)End SubPrivate Function pt(x As Integer)If x < 100 Thenpt = x Mod 100Elsept = pt(x \ 100) * 10 + x Mod 10Print ptEnd IfEnd Function为什么 打印三次结果分别是 17 178 178
这是一个递归函数,
分别解释
x\100结果是x除以100取整,
x Mod 100结果是x除以100取余数,
x Mod 10结果是x除以10取余数,
第一次运行pt
x=15768,
x Mod 100不计算
x \ 100=157,
注意这里开始递归,又一次需要计算pt,所以再次进入pt ,可以这样理解x Mod 10已经计算得到8就等这次pt的结果了并没有运行下一步Print pt
第二次运行pt
x=157,
x Mod 100不计算
x \ 100=1,
注意这里又开始递归,又一次需要计算pt,所以再次进入pt ,可以这样理解x Mod 10已经计算得到7就等这次pt的结果了并没有运行下一步Print pt
第三次运行pt
x=1,
这次运行的是
pt = x Mod 100
结果是pt=1
返回到第二次
pt=1*10+7=17
打印17
这是递归没结束pt=17还要
返回到第一次
pt=17*10+8=178
打印178
递归结束返回(pt=178)
你的上一步还有一个
打印178(所以这里还有一次178)