递归VBA函数

时间:2017-02-22 11:54:17

标签: excel vba recursion

我正在尝试在VBA中编写一个递归函数,这样一旦我创建的函数开始增加,结果就会限制在最低点。

到目前为止我写的代码是:

Public Function function2(var1, var2, var3, var4)

temp = Application.WorksheetFunction.Max(var3- 1, 2)

function_temp = function1(var1,var2, temp, var4)


If function_temp < function1(var1, var2, var3, var4) Then function2= function_temp 

If function_temp >= function1(var1, var2, var3, var4) Then function2= function1(var1, var2, var3, var4)

End Function

这是数字的样子,Desired专栏最终是我想要的。

Duration    Result  Current Desired

2   2.845   2.845   2.845

3   2.563   2.563   2.563

4   2.371   2.371   2.371

5   2.252   2.252   2.252

6   2.189   2.189   2.189

7   2.170   2.170   2.170

8   2.182   2.170   2.170

9   2.213   2.182   2.170

10  2.246   2.213   2.170

11  2.259   2.246   2.170

12  2.241   2.241   2.170

我意识到我需要使用递归函数,但我无法对其进行排序。有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

只需创建一个可以保持最小值的变量?比方说,minVar。

如果结果大于最小值,则使用minVar。 如果结果低于最小值,则使用该值并覆盖minVar。

Dim minVar as double
minVar = 999999    
If function_temp < function1(var1, var2, var3, var4) 
        Then  if function_temp < minVar
                 Then minVar = function_temp
               end if
         temp function2= function_temp
 end if