堆空间问题-数字序列迭代循环

时间:2019-02-16 14:32:28

标签: java heap-memory

我分配了一个任务,以在起始数字{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);
}

0 个答案:

没有答案