我目前正在实现这个简单的代码,试图使用 Python 2.7 找到斐波那契数列的第 n 个元素:
import numpy as np
def fib(n):
F = np.empty(n+2)
F[1] = 1
F[0] = 0
for i in range(2,n+1):
F[i]=F[i-1]+F[i-2]
return int(F[n])
这适用于 F < 79,但在那之后我得到了错误的数字。例如,根据 wolfram alpha F79 应该等于 14472334024676221,但是 fib(100) 给了我 14472334024676220。我认为这可能是由 python 处理整数的方式引起的,但我不知道是什么正是问题所在。非常感谢任何帮助!
请您参考如下方法:
numpy 数组的默认数据类型是 depending on architecture 64(或 32)位整数。
纯 python 会让你有任意长的整数; numpy 没有。
所以这更像是 numpy 处理整数的方式;纯 python 就可以了。
