这代码其实已经差不多可以实现功能了,不过有几个地方需要修改:
Private Function nx(n As Long) As Integer
'参数是Long型,结果却是Integer型,你就不怕溢出?应该把两个类型改成一致的
'(建议Long,位数多一些,后面也用Long了)
'另外,参数应该改成ByVal的,即 ByVal n As Long
Dim k As Integer, st As String
'其实这函数可以用纯数值方式实现的,没必要上String,改成Long;
'或者就用纯字符串方式,不过那样就可以用For了,为了不能用For,干脆抛弃String
![[滑稽]](/static/emoticons/u6ed1u7a3d.png)
st = "" '这句就应该改成 st = 0 了,当然删掉也可以(VB有自动初始化)
st = st & Str(k) '这句是最大的错误点,应该把Str去掉,或者像下面一样用CStr
'(如果st还用String类型的话);如果要改成数值方法,这句应该改成 st = st * 10 + k
Loop Until n < 10 '应该把 n < 10 改成 n = 0(或者 n < 1 也行),不能最后还剩一位数