VB 简单算法题

[复制链接]
查看11 | 回复1 | 2011-3-8 09:00:02 | 显示全部楼层 |阅读模式
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-3-8 09:00:02 | 显示全部楼层
这是一个递归函数,分别解释x\100结果是x除以100取整,x Mod 100结果是x除以100取余数,x Mod 10结果是x除以10取余数,第一次运行ptx=15768,x Mod 100不计算x \ 100=157,注意这里开始递归,又一次需要计算pt,所以再次进入pt ,可以这样理解x Mod 10已经计算得到8就等这次pt的结果了并没有运行下一步Print pt第二次运行ptx=157,x Mod 100不计算x \ 100=1,注意这里又开始递归,又一次需要计算pt,所以再次进入pt ,可以这样理解x Mod 10已经计算得到7就等这次pt的结果了并没有运行下一步Print p
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行