62,615
社区成员
发帖
与我相关
我的任务
分享
public int fibonacci(int N) {
int lo = 0;
int hi = 1;
for (int i = 0; i < N; i++) {
hi = lo + hi;
lo = hi - lo;
}
return lo;
}
递归虽然也优雅,但是数稍微大一点儿,程序就崩溃了
另外每回都重新从头计算,执行效率会很低
迭代速度快,用BigInteger替换一下,再来个本地数组或者文件保存一下之前的计算结果,才能保证不论多大的数都能得出正确的结果【如果不用BigInteger,不到第100个就由于溢出,出现负数的结果了】
public class Fibonacci {
public static void main(String[] args) {
long[] fibonacci = new long[51];
fibonacci[1] = 1;
fibonacci[2] = 1;
for (int n = 3; n <= 50; n++) {
fibonacci[n] = fibonacci[n - 1] + fibonacci[n - 2];
System.out.println(n + ":" + fibonacci[n]);
}
}
}