我们如何生成Fibonacci序列的第n项,其中起始值不是0和1.也就是说,用户给出两个起始值,比如1和4,然后代码根据用户输入生成斐波纳契。例如,1和4将给出1,4,5,9,13,23 ...... 通过制表或递归可以很容易地解决这个问题,但我尝试使用谷歌搜索一般公式(以节省运行时间),我就踩到了这个:
G(a,b,n)=((a(√5 - 1)+ 2b)Phin +(a(√5+ 1) - 2b)( - φ)n)/(2√5)< / p>
请注意上述公式中的“Phin&#39; Phi是权力n。 (Phi ** n)
其中a和b是起始值,phi,猜测是(1 +√5)/ 2,n是要获得的第n个值。
我尝试在python中实现上面的公式,但是没有给出预期的输出,(值不是我期待的)。我找到这个公式的网站,发现here有一个内置的序列生成器,这个生成器按预期工作,但我的代码没有。谁能发现我哪里出错?
当我做纤维(1,4,3)时,它产生13.260990336999413。但答案应该是9; 1,4,5,9
G(a,b,n)=((a(√5 - 1)+ 2b)Phin +(a(√5+ 1) - 2b)( - φ)n)/(2√5)< / p>
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
答案 0 :(得分:0)
你写了
/2*(sqrt(5))
但是这除以2,然后乘以5的平方根。把整个除数放在括号中。
此外,您需要区分Phi(大写)和phi(小写)。 Phi =(sqrt(5)+ 1)/ 2,但phi =(sqrt(5) - 1)/ 2。