Проблема пространства кучи - итерационный цикл числовой последовательности - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть задание создать последовательность чисел после начальных чисел {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);
}
...