Python 如何提高Fibonacci实现对大n的精度?

Python 如何提高Fibonacci实现对大n的精度?,python,fibonacci,Python,Fibonacci,我用比奈公式来计算大n的斐波那契数 比奈公式: 我的代码: #/usr/bin/env蟒蛇3 def钙纤维(n): 如果(n我认为您需要根据以下公式更正alpha\u n: alpha_n=((1-根_5)/2)**n 比奈公式的问题在于,计算时需要提高精度,而浮点运算并不能提供这一点 有几种方法可以有效地计算斐波那契数。下面是我最喜欢的方法,它不是(显式)迭代的,并且具有大致正确的运行时复杂性: def fib(n): X = 1<<(n+2) return po

我用比奈公式来计算大n的斐波那契数

比奈公式:

我的代码:

#/usr/bin/env蟒蛇3
def钙纤维(n):

如果(n我认为您需要根据以下公式更正
alpha\u n

alpha_n=((1-根_5)/2)**n

比奈公式的问题在于,计算时需要提高精度,而浮点运算并不能提供这一点

有几种方法可以有效地计算斐波那契数。下面是我最喜欢的方法,它不是(显式)迭代的,并且具有大致正确的运行时复杂性:

def fib(n):
    X = 1<<(n+2)
    return pow(X, n+1, X*X-X-1) % X
def fib(n):

X=1您是否能够使用迭代方法计算斐波那契数?否,因为对于非常大的数,您将出现超时错误或内存不足。我猜,如果您正在计算一个高得离谱的指数斐波那契数,这可能是一个问题(经过测试,python在尝试计算第1000000个斐波那契数时崩溃)。但是,如果您的索引在几千以内,这应该不是问题。我建议在此处使用decimal.decimal.decimal.decimal将越来越四舍五入,因此它也会提供错误的结果。我编辑了问题中的代码,此错误不会影响n的结果,因此问题仍然是一样的。@AmrRady您确定吗?等式n表示
1-root\u 5
。是的,我按照您指出的方式修复了代码,并再次尝试n=200,但仍然是相同的错误答案。