使用比奈公式在 python 中获取较大斐波那契数的准确值

我正在学习 itertools 并试图测试在 python 中实现的 Binet 公式的准确性。使用 itertools 的原因是我假设这将需要大量迭代,并且只有在大量迭代后才会出现差异。


from math import sqrt

import itertools

#fibonacci function 2

def fib1():

    n = -1

    while True:

        n += 1

        yield int(((1+sqrt(5))**n-(1-sqrt(5))**n)/(2**n*sqrt(5)))


#fibonacci function 1

def fib2():

    a,b = 0,1

    while True:

        yield a

        a, b = b, a + b



r=itertools.dropwhile(lambda x: x[0]==x[1],itertools.zip_longest(fib1(),fib2()))

for item in itertools.islice(r,0,1):

    print(item)

输出:


(498454011879265, 498454011879264)

在使用之前int()我使用round()过fib1(),结果是


(308061521170130, 308061521170129)

可以做些什么来提高我的比奈公式实现的准确性?



aluckdog
浏览 174回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python