VB程序问题 在线等!

来源:百度知道 编辑:UC知道 时间:2024/05/18 07:21:36
Public Function f(ByVal n%, ByVal r%)
If n <> 0 Then
f = f(n \ r, r)
Print n Mod r;
End If
End Function
Private Sub command1_click()
Print f(80, 8)
End Sub

运行结果是
1 2 0
谁更给我解释一下..谢谢
为什么结果是这三个数
1 2 0

80/8=10 余 0
10/8=1 余 2
1/8 余 1

这个程序里的以下两句代码是重点
f = f(n \ r, r) '第一次递归调用,一到这里就从f函数的头重新开始,一直到n=0为至
Print n Mod r; 'n=0时,第一次执行此代码,记住递归调用永远是逆顺的,所以打印120,而不是012

'自定义函数f 形参 n-短整型 r-短整型
Public Function f(ByVal n%, ByVal r%)
If n <> 0 Then '如果n不等于0
f = f(n \ r, r) '即递归调用自身进行运算
Print n Mod r; '输出r整除n的余数
End If
End Function

Private Sub command1_click()
Print f(80, 8) '调用f函数
End Sub

=================================
debug一下就可以得到如下数据

80 8 '0
10 8 '2
1 8 '1
0 8 'n=0不操作