【发布时间】:2019-04-14 03:20:21
【问题描述】:
我正在使用 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))
为了显示它,我使用这个:
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]
【问题讨论】:
-
如果有公式,为什么需要递归或迭代?
-
我认为(@Roman 如果我错了,请纠正我),他想要打印从 0 到 n 的所有 f(n) 值。这就是他迭代的原因。
标签: python recursion iteration fibonacci