Frage von BruceWayne27, 19

Kann mir jemand bei dieser VBA PROGRAMMIERUNG helfen?

Hallo!

also ich habe für Excel in VBA einen code eingegeben, der mir die Fakultät einer Zahl berechnet:

Public Function my_fakultaet(z As Double) As Double Select Case z Case 2 To 170 my_fakultaet = z * my_fakultaet(z - 1) Case 1 my_fakultaet = 1 End Select

End Function

Jetzt würde ich aber noch gerne eine IF Bedinung eingeben, dass für alle z<=0 gilt, dass Fakultät=1 ist!!!! kann mir wer sagen wie ich das in VBA eingeben muss?)):

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Suboptimierer, Community-Experte für Excel, 19
Public Function my_fakultaet(z As Double) As Double
If z <= 0 Then z = 1
Select Case z
  Case 2 To 170
    my_fakultaet = z * my_fakultaet(z - 1)
  Case 1
    my_fakultaet = 1
End Select
End Function

170 als Obergrenze ist mutig. Die Zahlen werden schnell sehr groß. Bei mir scheitert der Versuch schon bei z=13

Ist Fakultät für Gleitkommazahlen definiert? Wenn nicht, würde ich z als Byte und die Funktion als Long definieren.

Kommentar von maximilianus7 ,

und wenn du stattdessen:

If z <= 1 Then 
z = 1
Else
my_fakultaet = z * my_fakultaet(z - 1)

nimmst,  brauchst du auch kein select

Kommentar von Suboptimierer ,

Der Nachteil bei deiner Variante ist, dass der Rückgabewert im Fall z <= 1 undefiniert ist.

Hinter dem then sollte my_fakultaet = 1 stehen.

Antwort
von CrazyPancake, 17

Dann füg doch einfach diesen Fall (Case) an? oO Brauchst ja nicht unbedingt ein "If" dafür

Keine passende Antwort gefunden?

Fragen Sie die Community