Python 闭式斐波那契级数

Python 闭式斐波那契级数,python,recursion,iteration,fibonacci,Python,Recursion,Iteration,Fibonacci,我正在使用Python使用以下公式创建斐波那契: 我有一个递归斐波那契函数: 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_fibo

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

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

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))
迭代函数的输出:

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]

你要实现的方程是斐波那契级数

封闭形式意味着评估是一个恒定的时间操作

g = (1 + 5**.5) / 2  # Golden ratio.
def fib(N):
    return int((g**N - (1-g)**N) / 5**.5)
相比之下

def fib_iterative(N):
    a, b, i = 0, 1, 2
    yield from (a, b)
    while i < N:
        a, b = b, a + b 
        yield b
        i += 1

我想你误解了你提到的斐波那契序列的f_n表达式

请注意,它不是递归关系。它是n的函数,即当给定n时,它提供第n项的值

因此,这里确实没有递归/迭代解决方案来生成整个Fibonnaci序列

插入n为0、1、2、3。。提供术语0、1、1、2、。。这是本系列的第一部

举例说明,当n=3时,f_3计算为-

如果你有一个公式,为什么需要递归或迭代?我想(@Roman如果我错了,请纠正我),他想要的是打印从0到n的f(n)的所有值。这就是他迭代的原因。
g = (1 + 5**.5) / 2  # Golden ratio.
def fib(N):
    return int((g**N - (1-g)**N) / 5**.5)
def fib_iterative(N):
    a, b, i = 0, 1, 2
    yield from (a, b)
    while i < N:
        a, b = b, a + b 
        yield b
        i += 1
>>> [fib(n) for n in range(10)]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
>>> list(fib_iterative(10))
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]