VBA 中的递归序列

Recursive sequence in VBA

我想写一个有 5 个输入的函数:

输出

:

问题对我来说似乎很简单,但是我正在处理错误:

Function Sequence(x_0 As Double, x_1 As Double, a As Double, b As Double, n As Double) As Double
    If n = 0 Then
        x_0
    ElseIf n = 1 Then
        x_1
    Else
        a * Sequence(x_0, x_1, a, b, n-1) + b * Sequence(x_0, x_1, a, b, n-2)
    End If
End Function

如果我想使用我的功能:

Sequence(1;1;1;1;1)  

我看到错误:

你知道我做错了什么吗?

  1. 在VBA中,调用参数的函数必须用逗号隔开。与 UDF 函数一样,您可以根据区域设置使用列表分隔符从 sheet 调用它 ["=Sequence(1, 1, 1, 1, 1) 或 Sequence(1; 1; 1; 1; 1) ];

  2. 如果被调用的函数 return 是什么东西,你调用它的方式应该是处理 returned 值的方式:

Debug.Print Sequence(1, 1, 1, 1, 1)

然后,尝试使用函数参数。

  1. 当有一些条件函数输出时,你的函数必须配置为return:
Function Sequence(x_0 As Double, x_1 As Double, a As Double, b As Double, n As Double) As Double
    If n = 0 Then
        Sequence = x_0
    ElseIf n = 1 Then
        Sequence = x_1
    Else
        Sequence = a * Sequence(x_0, x_1, a, b, n - 1) + b * Sequence(x_0, x_1, a, b, n - 2)
    End If
End Function