У меня есть задание создать последовательность чисел после начальных чисел {0, 1, 2}, где дополнительные числа рассчитываются по формуле: n = (n - 1) + (n - 3), что приводит к последовательности.
У меня проблемы с тем, что моему циклу не хватает места в куче.Кто-нибудь есть какие-либо предложения о том, как решить эту проблему?
Мне нужно рассчитать до n = 1 500 000 000
public long calculate(long n) {
// If n is one of known values return that value
if(n<=1){
return 0;
}
if(n==2){
return 1;
}
if (n==3){
return 2;
}
// initate array to calculate
ArrayList<Long> seq = new ArrayList<Long>();
int x = 0;
long y = 0;
seq.add(y);
seq.add(y);
seq.add(y+1);
seq.add(y+2);
// for loop until reached requested number
for (int i = 4; i<=n; i++){
seq.add(seq.get(i-1)+seq.get(i-3)) ;
}
for (int i =0; i<n; i++){
x++;
}
return seq.get(x);
}