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
展开
 我来答
最美乡村行
2011-03-08 · TA获得超过1136个赞
知道大有可为答主
回答量:1191
采纳率:0%
帮助的人:1617万
展开全部
这是一个递归函数,
分别解释
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)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式