[求助]请大家来解答一下关于递归调用的题
请大家来解答一下关于递归调用的题Option Explicit
Private Sub Command1_Click()
Dim a As Integer, n As Integer
a = 2: n = 10
Print myfun(a, n); n
End Sub
Private Function myfun(a As Integer, n As Integer)
If n = 0 Then
Exit Function
Else
n = n - 1:myfun = a + myfun(a, n)
End If
End Function
这道题运行的结果是 20 0,我的思路是myfun = a + myfun(a, n)调用了10次后n=0 Exit Function,myfun = 20+ myfun(2, 0),但是myfun(2, 0)没有值啊,书上说递归调用的条件是要有结束的条件和结束时的值,但是这道题上没有结束时的值啊,myfun(2, 0)该等于多少啊?请大家解答一下
如果把n = n - 1:myfun = a + myfun(a, n),改为myfun = a + myfun(a, n-1),结果是20 10 ,为什么这次的n=10了啊,在自定义的函数过程中n 的终值等于0,n 在 myfun(a, n)后输出,n的值应该就是自定义的函数过程中n 的终值啊,为什么不改之前是0,改了之后就是10了啊。请大家指教