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

VBA中的简单递归函数,Excel未返回预期结果,excel,vba,recursion,Excel,Vba,Recursion,我有一个简单的递归函数,可以在VBA中编写,它执行以下操作:它必须计算我们必须获取参数“x”的日志以查找日志(x)

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

示例:

  • 日志计数(5):日志(5)=0,6。。。所以函数应该返回1
  • 对数计数(89):对数(89)=1,9。。。和log(log(89))=0,28。。。所以函数应该返回2
  • 日志计数(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
函数logcount(x为双精度)为整数
如果x是自然对数

很明显,你指的是以10为底的对数:

Log10 = Log(X) / Log(10#)
是自然对数

很明显,你指的是以10为底的对数:

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

什么是
logcount(0,4)
您的函数只接受一个参数。同样是写入的
logcount(1)
logcount(2)
都返回1@ConradFrix
0,4
0.4
用非英语的美国语言编写的(通过问题使用),小数点是
。对不起,在法国我们用逗号作为小数点分隔符,您应该读“0.4”@yast no我的道歉。事实上,我知道得更清楚了,我仍然被我以英美为中心的十进制标记的观点吸引住了什么是
logcount(0,4)
你的函数只接受一个参数。同样是写入的
logcount(1)
logcount(2)
都返回1@ConradFrix
0,4
0.4
用非英语的美国语言编写的(通过问题使用),小数点是
。对不起,在法国我们用逗号作为小数点分隔符,您应该读“0.4”@yast no我的道歉。事实上,我知道的更多,我仍然被我以英美为中心的十进制马克的观点所吸引!事实上,我正在使用windows calc中的日志检查我的结果!用这个计算,我们得到了10进制对数,对吗?如果我想要自然日志,我的程序是正确的?天哪!事实上,我正在使用windows calc中的日志检查我的结果!用这个计算,我们得到了10进制对数,对吗?如果我想要自然日志,我的程序是正确的?