Fibonacci迭代:找到n>的Fibonacci序列的第n项。 50

时间:2017-06-18 11:07:19

标签: java iteration fibonacci

在n = 46之后,此代码没有返回正确的答案。我该怎么做才能解决这个问题以获得更高的第n个术语?

df2 =pd.merge(df2,df1,on='A',how='left')
df2 = df2.fillna(value='00')
df2 = df2[['A','D','C']].rename(columns={'C': 'E'})
print(df2)
   A  D    E
0  1  0   00
1  2  0  900
2  3  0   00
3  4  0  300
4  5  0  900
5  6  0   00

谢谢大家的积极反馈。在问到问题之后,我一想到代码就弄明白了。

2 个答案:

答案 0 :(得分:3)

这很可能是因为整数溢出。使用long表示变量xyz

这会让你更进一步,但最终也会溢出long范围。如果您还需要更大的数字,请转到BigInteger

答案 1 :(得分:-1)

复杂度为O(1)的最佳方式是Binet的公式,在Java中如下:

 static long fibonacciBinet(long n) {
    if (n <= 1) return n;
    double sqrt5 = Math.sqrt(5);
    long x = (long) ((Math.pow(1+sqrt5, n)-Math.pow(1-sqrt5, n))/(Math.pow(2, n)*sqrt5));

    return x;
}