java, вычисление факториала

391
15 октября 2017, 21:26

Здравствуйте. как получить полное число, которое выходит за пределы типа long, и соответственно выдает не правильный ответ. скорее всего будет ещё какое либо число которое будет состоять из двух типов лонг но только для того что бы расширить регистры. не пойму как это делать.

public class CalculateFactorial{
public static void main(String[] args){
    factorial fact = new factorial();
    System.out.println(fact.factoring(23));
}
static class factorial{
    long result = 1;
    public long factoring(long x){
        for(long i = 1; i<=x; i++){
            result *= i;
        }
        return result;
    }
}

}

Answer 1

Вручную делать не надо, есть тип Biginteger

public static BigInteger factorial(BigInteger n) {
    BigInteger result = BigInteger.ONE;
    while (!n.equals(BigInteger.ZERO)) {
        result = result.multiply(n);
        n = n.subtract(BigInteger.ONE);
    }
    return result;
}
READ ALSO
Выбор перехода между стэйтами по String

Выбор перехода между стэйтами по String

Как реализовать метод select, чтобы отрабатывались переходы selectOne, selectTwo при вызове метода?

250
Что производительнее: HashMap.values() или HashMap.entrySet()?

Что производительнее: HashMap.values() или HashMap.entrySet()?

Каким способом можно пройтись по всем значениям производительнее (ключи не нужны) в HashMap?

230
Поведение ассоциативной карты или TreeMap в Java

Поведение ассоциативной карты или TreeMap в Java

Что будет если в TreeMap запросить значение по несуществующему ключуСработает исключение или вернёт null

219