Einfache rekursive Funktion in VBA mit Excel nicht Rückkehr erwartete Ergebnis
Habe ich eine einfache rekursive Funktion zu schreiben in VBA, die Folgendes macht : Es muss die Anzahl der Zeiten, die wir nehmen müssen das Logbuch der parameter 'x' zu finden, log(x) < 1
Beispiele :
- logcount(5) : log(5) = 0,6... also die Funktion sollte return 1
- logcount(89) : log(89) = 1,9... und log(log(89)) = 0,28... also die Funktion sollte die Rückkehr 2
- logcount(0,4) soll return 1
etc...
So schrieb ich es und es funktioniert nicht wie erwartet ! Es fügt immer +1 auf das Ergebnis ! Es sieht aus wie das Letzte 'Else' block wird immer interpretiert. Jede Hilfe wird wirklich geschätzt
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
- was ist
logcount(0,4)
Ihre Funktion nimmt nur einen parameter. Auch wie geschriebenlogcount(1)
undlogcount(2)
beide return 1 0,4
ist0.4
geschrieben in einem nicht-Englis-US-Gebietsschema (die verwendet wird, durch die Frage), wo der Dezimalpunkt wird,
.- Sorry, in Frankreich setzen wir ein Komma als Dezimaltrennzeichen, die Sie Lesen sollten, '0.4'
- Nein, ich entschuldige mich. Ich weiß eigentlich besser, und ich habe immer noch gefangen von meinen Anglo/US-zentrische Sicht auf die dezimal-mark
Du musst angemeldet sein, um einen Kommentar abzugeben.
Log
in VBA ist der Natürliche Logarithmus.Anscheinend meintest du eine Basis-10-Logarithmus: