У меня есть задание для класса, где мне нужно написать метод, который вычисляет геометрическую прогрессию для 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. Затем метод начнет возвращать неправильные ответы. Я предполагаю, что это связано с максимальным значением, которое может содержать число с плавающей точкой.
Есть ли способ рассчитать / сохранить значения, которые превышают максимальное значение примитивных типов данных?
Мне кажется, что рекурсия не является хорошим способом для вычисления геометрической прогрессии, но, возможно, я просто что-то упускаю. Какие-либо предложения?
Спасибо!