首页 > 解决方案 > 堆空间问题——数列迭代循环

问题描述

我有一个任务是在起始数字 {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);
}

标签: javaheap-memory

解决方案


推荐阅读