求vb大神解一个小计算题
呵呵。这是一个递归函数的调用。递归函数卜滑的特点先顺序向下处理数据,并保存每次处型庆腊理差迹的结果,完了再依次返回,并执行下句,逆向使用递归过程的每个数据。所以结果就是反过来的了。比较下面的程序,或许会使你更明白的。朋友
Private Function f(ByVal n%, ByVal r%)
Print n Mod r;'把输出这句放在递归过程前面,结果就是4410了
If n <> 0 Then
f = f(n \ r, r)
'Print n Mod r;
End If
Print n Mod r;'如放在后面结果是一样的
End Function
Private Sub Command1_Click()
Print f(100, 8)
End Sub
答案为:1 4 4
首先第一次调用f时,早简亏n=100,r=8,此时n\r=12
所以继续调用f,此时n=12,r=8,此时n\r=1
所以继续调用f,此时n=1,r=8,此时n\r=0
继续调用f,此时n=0,则结咐迟束调陆神用,再反逆
n=1,r=8时,print n mod r,即print 1
n=12,r=8时,print n mod r,即print 4
n=100,r=8时,print n mod r,即print 4
所以最终答案是1 4 4,注意中间是有标准间隔的
100一直除以8取整,直到n为1