java - 堆空间问题——数列迭代循环
问题描述
我有一个任务是在起始数字 {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);
}
解决方案
推荐阅读
- reactjs - Reactjs:如何从 submitHandler 访问上下文?
- python-3.x - Lambda 变量未定义。Python
- redis - 带有redis的Apache梁-选择数据库并从哈希中读取?
- javascript - 如何从 rxjs 中的可观察对象数组中解析 html 元素
- kotlin - Groovy 无法识别 spock 中的 kotlin 构造函数
- javascript - 如何展开和折叠单字符数组?
- javascript - style.transform = "rotate()" 不止一次?
- c# - 为什么当相机面对物体时使用按键旋转相机时它正在摇晃/卡顿?
- javascript - 如何在 chrome 扩展中从磁盘写入和读取文件?
- node.js - 如何更新快速正文解析器,Node API 停止工作,消息日志文件中不推荐使用正文解析器