【发布时间】:2019-03-04 08:56:05
【问题描述】:
我正在尝试创建一个函数,它可以为我提供任何 n 值的斐波那契数列。但是,在 n = 92 之后,我得到的答案不正确。
eg. For n = 93
Expected output = 12200160415121876738
Actual Output = -6246583658587674878
我的代码如下:
import numpy as np
def Power(M, n):
if not n:
return 1
elif n % 2:
return M*Power(M, n-1)
else:
sqrt = Power(M, n//2)
return sqrt**2
def _fib(n):
G = np.matrix([[1,1],[1,0]])
F = Power(G, n)
return F[0,1]
我认为这与矩阵库的限制有关的整数溢出有关。我不知道如何解决它。请帮帮我。如果这个算法得到改进,我会更喜欢。
【问题讨论】:
-
你在这里使用的算法是什么?
-
@AKX 在问题中添加了算法
-
您是否尝试为矩阵设置显式
dtype?顺便说一句,取而代之的是TypeError: 'int' object is not subscriptable... -
我没有收到任何类型的此错误,例如 Type Error 。我没有尝试做 dtype - 怎么做?
-
32 位整数溢出:
2^31 + 6246583658587674878 = 12200160415121876738