我正在使用 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 = 10if 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]
2 回答
四季花海
TA贡献1811条经验 获得超5个赞
我认为您误解了您提到的斐波那契数列的表达式 f_n。
请注意,它不是递推关系。它是n的函数,即,当给定n时,它提供第n项的值。
因此,您真的没有递归/迭代解决方案来生成整个斐波那契数列。
将n 代入为 0, 1, 2, 3.. 提供该系列的项 0, 1, 1, 2, ..。
为了说明,当n = 3 时, f_3 计算为 -
添加回答
举报
0/150
提交
取消