我们如何生成起始值不是 0 和 1 的斐波那契数列的第 n 项。也就是说,用户给出两个起始值,比如 1 和 4,然后代码根据用户输入生成斐波那契。例如,1 和 4 将给出 1,4,5,9,13,23... 用制表或递归很容易提出这个问题,但我尝试在谷歌上搜索一个通用公式(以节省运行时间),然后我就这个:
G(a, b, n) = ( (a(√5 – 1) + 2b) Phin + (a(√5 + 1) – 2b) ( –phi)n ) / (2√5)
请注意,在上面的公式中,'Phin' 是 Phi 的 n 次幂。(披**n)
其中 a 和 b 是起始值 phi,正如你猜测的那样是 (1+√5)/2 并且 n 是要获得的第 n 个值。
我尝试在 python 中实现上述公式,但没有给我预期的输出,(值不是我所期望的)。关于这一点我发现了这个公式的网站,发现这里有一个内置发电机的序列,该发电机正常工作,但我的代码没有。谁能发现我哪里出错了?
当我执行 fibon(1,4,3) 时,它会产生 13.260990336999413。但答案应该是 9;1、4、5、9
G(a, b, n) = ( (a(√5 – 1) + 2b) Phin + (a(√5 + 1) – 2b) ( –phi)n ) / (2√5)
def fibon(a,b,n):
phi = (1+sqrt(5))/2
g = ((a*(sqrt(5) - 1)+2*b)*phi**n +(a*(sqrt(5)+1)-2*b)*(-phi)**n)/2*(sqrt(5))
return g
你写了
/2*(sqrt(5))
但这除以二,然后乘以五的平方根。将整个除数放在括号中。
此外,您需要区分 Phi(大写)和 phi(小写)。phi = (sqrt(5) + 1)/2,但 phi = (sqrt(5) - 1)/2。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句