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 geschrieben logcount(1) und logcount(2) beide return 1
  • 0,4 ist 0.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
InformationsquelleAutor Yass T | 2012-01-30
Schreibe einen Kommentar