Więc kiedy googe, mówi, że Biginteger w C # jest nieskończony, ale faktoryzacja 1000 jest niezdefiniowany. Zrobiłem tę prostą metodę rekurencyjnej i zwraca coś bardzo dużego.

static BigInteger faculty(int n) {

        if(n == 2)
            return 2;
        return n*faculty(n-1);
    }

Więc prawdopodobnie jest przepełnienie, ale czy to oznacza, że bigintegers nie są nieskończonymi?

0
Peter Peperoni 29 październik 2020, 17:50

1 odpowiedź

Najlepsza odpowiedź

To nie jest (niemożliwe). Poniższe prace są w porządku tutaj (testowane na .NET Core 3.1 i .NET Framework 4.7.2):

var x = faculty(1000);
var s = x.ToString();
Console.WriteLine(s.Length); // 2568 (digits)
Console.WriteLine(s); // 402387260...000000 (lots of digits)
1
Marc Gravell 29 październik 2020, 14:54