封闭式斐波那契数列

我正在使用 Python 使用以下公式创建斐波那契数列:

http://img.mukewang.com/611781050001704302770067.jpg

我有这个递归斐波那契函数:


def recursive_fibonacci(n):

if n <= 1:

    return int((((1 / (5 ** 0.5)) * (1 + (5 ** 0.5))) ** n) - (((1 / (5 ** 0.5)) * (1 - (5 ** 0.5))) ** n))

else:

    return(recursive_fibonacci(n - 1) + recursive_fibonacci(n - 2))

为了显示它,我正在使用它:


nterms = 10


if nterms <= 0:

    print("Please Enter a positive integer")

else:

    print("Recursive Fibonacci Sequence: " ,

        [recursive_fibonacci(i) for i in range(nterms)])

    print("Iterative Fibonacci Sequence: " ,

        [iterative_fib(i) for i in range(nterms)])

我将如何使用这个斐波那契的迭代函数?


我试过用这个:


def iterative_fib(n):

    equation = lambda n: int((((1 / (5 ** 0.5)) * (1 + (5 ** 0.5))) ** n) - (((1 / (5 ** 0.5)) * (1 - (5 ** 0.5))) ** n))

    if n <= 1:

        return equation(n)

    else:

        a, b = 1, 2

        for i in range(n):

            fn = equation((i-a)+(i-b))

        return fn

然而,这个迭代函数似乎没有与递归函数相同的输出。


递归函数的输出:


Recursive Fibonacci Sequence:  [0, 2, 2, 4, 6, 10, 16, 26, 42, 68]

迭代函数的输出:


Iterative Fibonacci Sequence:  [0, 2, 2, 2, 3, 6, 13, 27, 58, 122]


猛跑小猪
浏览 225回答 2
2回答

四季花海

我认为您误解了您提到的斐波那契数列的表达式&nbsp;f_n。请注意,它不是递推关系。它是n的函数,即,当给定n时,它提供第n项的值。因此,您真的没有递归/迭代解决方案来生成整个斐波那契数列。将n 代入为 0, 1, 2, 3.. 提供该系列的项 0, 1, 1, 2, ..。为了说明,当n = 3 时, f_3 计算为 -
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python