Я пытаюсь вычислить очень большие числа «длинных» типов, используя рекурсивный алгоритм возведения в квадрат, как показано ниже. Я сталкиваюсь с ошибками переполнения стека при увеличении размера экспоненты, и я хочу выяснить, как я могу позволить этому циклу и не занимать так много места в стеке. Я хочу добиться этого без использования библиотеки Math, поэтому только в ванильном коде Java.
public long exp(long base, long exponent, long accum){
if (power > 0) {
return exp(base, exponent - 1, accum * base);
} else {
return accum;
}
}