silnia - zła wartośc dla n=14

0

mój program myli się przy mnożeniu funkcji dla n = 14 przy mnożeniu liczb od 14 do 5 i mnożąc ten wynik * 4 podaję złą wartość. Z czego może to wynikać?

static ulong Silnia (uint n)
        {
            if (n == 0)
            {
                return 1;
            }
            uint silnia=1;
            do
            {
                silnia = silnia * n ;
                n--;
            } while (n>1);
            return silnia;
        }
0

przy okazcji, których znaków użyć żeby wkleić poprawnie kod z c# ?

4

Używaj znaków ```. Użyj ``` jako pierwszej linii kodu oraz ``` jako ostatniej linii kodu (w nowych liniach!) aby oznaczyć jako blok. Możesz też napisać ```csharp aby on to pokolorował składnią C#.

A problem najprawdopodobniej wynika z ograniczeń zakresu zmiennej uint - od 0 do 4 294 967 295, a 14! to 87 178 291 200, stąd się nie "mieści" w zakresie i następuje przepełnienie zmiennej. Możesz użyć ulong, ma zakres do 18 446 744 073 709 551 615.

0

Zmień na linijkę ulong silnia = 1.

2

tak patrzę na te tematy i zaczynasz naukę od dupy strony tak nie nauczysz się programować, a przynajmniej dochodzenie do odpowiedzi przez nie wiem to wrzucę na forum jest złym podejściem

Może zacznij od debugowania, żeby chociaż zrozumieć co się dzieje w każdym roku, później sprawdź jakie są limity dla typów zmiennych itd, bo idąc tą drogą za chwile będziesz musiał sięgać po BigInteger bez zrozumienia powodu

1 użytkowników online, w tym zalogowanych: 0, gości: 1