为了账号安全,请及时绑定邮箱和手机立即绑定

封闭式斐波那契数列

封闭式斐波那契数列

猛跑小猪 2021-08-14 16:38:09
我正在使用 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 计算为 -

//img1.sycdn.imooc.com//61178124000160cc06510312.jpg

查看完整回答
反对 回复 2021-08-14
  • 2 回答
  • 0 关注
  • 224 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信