获取 G 系列的第 n 个值(一般斐波那契序列)



我们如何生成起始值不是 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 次方。

其中 a 和 b 是起始值,正如你猜测的那样,phi 是 (1+√5)/2,n 是要得到的第 n 个值。

我尝试在 python 中实现上述公式,但没有给我预期的输出(值不是我期望的)。我在这里找到这个公式的站点有一个内置的序列生成器,这个生成器按预期工作,但我的代码没有。谁能发现我哪里出错了?

当我做斐波(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))

但这除以 2,然后乘以 5 的平方根。将整个除数放在括号中。

此外,您需要区分 Phi(大写)和 phi(小写)。Phi = (sqrt(5) + 1)/2,但 phi = (sqrt(5) - 1)/2。

最新更新