VB 简单算法题
PrivateSubCommand1_Click()DimxAsIntegerx=15768Printpt(x)EndSubPrivateFunctionpt(xAsIn...
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 展开
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 展开
展开全部
这是一个递归函数,
分别解释
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)
分别解释
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)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询