痛苦啊,看上去象是做作业.
Private Sub XXX(ByRef Ret As Long, ByVal N As Long)
       Dim i As Long
       Ret= 1;
       For i= N to 2 
             Ret= Ret * i
       Next i
End SubPrivate Function XXX(ByVal N As Long) As Long
        Dim i As Long
        XXX= 1
        For i= N to 2
              XXX= XXX * i
        Next i
End SubPrivate Function Fibonacci(ByVal N As Long)
        If N= 1 Then
               Fibonacci= 0
        ElseIf N= 0 Then
               Fibonacci= 1
        ElseIf N>= 2
               Fibonacci= Fibonacci(N - 1) + Fibonacci(N - 2)
        Else 
               Fibonacci= -1
        End if
End Function
       没有运行过,出了错请原谅

解决方案 »

  1.   

    记得要先定义变量call getvalue(A,a1)
    call getvalue(B,b1)
    call getvalue(C,c1)S=a1+b1+c1sub getvalue(vname as integer,byref vv as integer)
    dim i as integer
    vv=1
    for i=1 to vname
        vv=vv*i
    next i 
    end sub你如果用fuction的话
    改成它就可能啦,
    function getvalue(vname as integer,byref vv as integer)
    dim i as integer
    vv=1
    for i=1 to vname
        vv=vv*i
    next i 
    end function
      

  2.   

    Private Sub Command1_Click()
    Dim a As Integer
    a = getvalue(6)
    Text1.Text = a
    End SubFunction getvalue(vname As Integer)
    Dim i As Integer
    If vname = 1 Then
       getvalue = 0
       Exit Function
    End If
    If vname = 2 Then
       getvalue = 1
       Exit Function
    End If
    getvalue = getvalue(vname - 1) + getvalue(vname - 2)
    End Function
      

  3.   

    byref前缀表示参数是按地址传递
    byval前缀表示参数据是按值传递