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