Геометрическая прогрессия с использованием рекурсии (Java) - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть задание для класса, где мне нужно написать метод, который вычисляет геометрическую прогрессию для n целых чисел, используя рекурсию.

Значение n получено от пользователя.

public static float Geometric(float n)
{
    if(n==0)
        return 1;
    else 
    {
        if(n == 1)
            System.out.println(n); 
        else    
            return (n * Geometric(n-1)); 
    }
}

Код работает нормально, пока значение n не превысит 34. Затем метод начнет возвращать неправильные ответы. Я предполагаю, что это связано с максимальным значением, которое может содержать число с плавающей точкой.

Есть ли способ рассчитать / сохранить значения, которые превышают максимальное значение примитивных типов данных?

Мне кажется, что рекурсия не является хорошим способом для вычисления геометрической прогрессии, но, возможно, я просто что-то упускаю. Какие-либо предложения?

Спасибо!

1 Ответ

0 голосов
/ 07 ноября 2018

Добро пожаловать в StackOverflow!

Для работы с массивными числами, вы можете попробовать взглянуть на класс BigDecimal или BigInteger . Есть также еще один вопрос StackOverflow ( Поиск факториала с использованием рекурсии с классом BigInteger ), который должен быть очень похож на ваш случай

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...