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)
我看到错误:
你知道我做错了什么吗?
在VBA中,调用参数的函数必须用逗号隔开。与 UDF 函数一样,您可以根据区域设置使用列表分隔符从 sheet 调用它 ["=Sequence(1, 1, 1, 1, 1) 或 Sequence(1; 1; 1; 1; 1) ];
如果被调用的函数 return 是什么东西,你调用它的方式应该是处理 returned 值的方式:
Debug.Print Sequence(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
我想写一个有 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)
我看到错误:
你知道我做错了什么吗?
在VBA中,调用参数的函数必须用逗号隔开。与 UDF 函数一样,您可以根据区域设置使用列表分隔符从 sheet 调用它 ["=Sequence(1, 1, 1, 1, 1) 或 Sequence(1; 1; 1; 1; 1) ];
如果被调用的函数 return 是什么东西,你调用它的方式应该是处理 returned 值的方式:
Debug.Print Sequence(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