Fakultät über Produkt der geraden und Produkt der ungeraden Zehlen bestimmen

  • Allgemein

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Fakultät über Produkt der geraden und Produkt der ungeraden Zehlen bestimmen

    Hallo Experten,

    ich habe eine für euch sicherlich einfache Frage.

    Wie sieht ein VB Code aus, mit dem ich die Fakultät einer Zahl n errechne, indem das Produkt aller geraden Zahlen mit dem Produkt aller ungeraden Zahlen miteinander multipliziert wird???

    Vielen Dank schon mal für eure Hilfe.

    Gruß

    Stefan
    Hallo Stefan,
    welche VB-Version?
    Es gab erst kürzlich eine Frage zu Fakultät.
    Siehe hier:
    [VB 2012] Fakultät berechnen
    Du nimmst am Besten die Lösung mit der Schleife.
    Für ungerade Zahlen, Startwert 1 und Schrittweite 2 in der Schleife,
    für gerade Zahlen, Startwert 2 und ebenfalls Schrittweite 2 nehmen.
    Gruss,

    Neptun
    Ungefähr so (ungetestet):

    VB.NET-Quellcode

    1. Function Faktorial (ByVal n As Long) As System.Numerics.BigInteger
    2. Dim P1 As New System.Numerics.BigInteger(1)
    3. Dim P2 As New System.Numerics.BigInteger(1)
    4. For i as Long From 2 To n
    5. if i Mod 2 = 0 Then P2 = P2.Multiply(i) Else P1=P1.Multiply(i)
    6. Next
    7. Return P1.Multiply(P2)
    8. End Function
    BigInteger deshalb, weil bei Fakultät "normale" Typen ganz schnell an die Grenzen kommen.
    Für kleine Zahlen kannst du auch mit ULong arbeiten.

    Wenn du auf gerade/ungerade Produkte verzichtest, kannst du auch die sehr elegante Rekursiv-Lösung nehmen:
    [VB 2012] Fakultät berechnen
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Stefan_83 schrieb:

    indem das Produkt aller geraden Zahlen mit dem Produkt aller ungeraden Zahlen miteinander multipliziert wird
    ist nicht sinnvoll.
    Bwerechne die Fakultät so, wie sie definiert ist, als Produkt aller Zahlen von 1 bis n.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    petaod schrieb:

    Das muss nicht zwangsläufig sinnvoll sein
    :thumbsup:
    Dann hätte @Stefan_83: aber in seinen Post reinschreiben können / sollen, dass das eine Vorgabe ist.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!