VBA中的简单递归函数,Excel不返回预期结果

时间:2012-01-30 22:10:40

标签: excel vba recursion

我有一个简单的递归函数可以在VBA中编写,它执行以下操作:它必须计算我们必须使用参数'x'的日志来查找log(x)< 1

示例:

  • logcount(5):log(5)= 0,6 ...所以函数应返回1
  • logcount(89):log(89)= 1,9 ...和log(log(89))= 0,28 ...所以函数应返回2
  • logcount(0,4)应该返回1 等...

所以我写了它并没有按预期工作!它总是为结果添加+1!看起来总是解释最后一个'Else'块。任何帮助将非常感谢

Function logcount(x As Double) As Integer
  If x <= 0 Then
    MsgBox "You must enter a positive value"
    Exit Function
  ElseIf Log(x) < 1 Then
    logcount = 1
  Else
    logcount = 1 + logcount(Log(x))
  End If
End Function

1 个答案:

答案 0 :(得分:4)

Log in VBA是自然对数。

显然你的意思是10对数:

Log10 = Log(X) / Log(10#)