java - 斐波那契数列有一个负数
问题描述
我有斐波那契序列的代码:
public class Fibonacci {
private List<Integer> fibonacci;
public void fillFibonacci(){
fibonacci = new ArrayList<>();
int n1 = 1 , n2 = 1 , n3;
fibonacci.add(n1);
fibonacci.add(n2);
for(int i = 2 ; i < 4000 ; i ++){
n3 = n1 + n2;
fibonacci.add(n3);
n1=n2;
n2=n3;
}
}
public void printFibonacci(){
for(int i = 0 ; i < fibonacci.size() ; i ++){
System.out.print(fibonacci.get(i) + " ");
System.out.println(i);
}
}
}
此代码显示负数有什么问题?
解决方案
在这个循环中你不能达到 index= 4000,你有integer overflowed。您可以达到的最大值是 49。这样更改循环。
for(int i = 2 ; i < 49 ; i ++){
n3 = n1 + n2;
fibonacci.add(n3);
n1=n2;
n2=n3;
}
推荐阅读
- zsh - 更改 ZSH 命令提示符
- angularjs - 查询参数的顺序对于 Angular UI 路由器应该无关紧要
- javascript - 如何将值数组传递给自动完成选项
- ios - 如何让 dispatch_async 运行
- c++ - CMake:将 GTest 添加到构建
- reactjs - 更新“URL”但不加载路径
- python - Pandas Dataframe:如何通过每个代理和堆叠代理的多个观察来区分观察之间的差异
- reactjs - 反应状态和 Javascript 对象之间的区别
- python - Keras - 是否可以使用一个 GPU 同时训练两个不相关的模型?
- php - 在单个 HTTP POST 请求中同时传递文件资源和 json 正文