K阶斐波那契数列 数据结构
一、什么是K阶斐波那契数列
斐波拉契数列指由1、1、2、3、5、8、13、...构成的数列,由前相邻两项之和组成后一项,其第n项即通项公式为an=√5/5 [(1/2+√5/2)^ n-(1/2-√5/2)^n] (n=1,2,3...)
k阶斐波拉契数列指前k-1项为0,第k项为1,以后各项都是前k项的和,例如:
3阶斐波拉契数列:0、0、1、1、2、4、7、13、24、...
4阶斐波拉契数列:0、0、0、1、1、2、4、8、15、29、...
k阶斐波拉契数列的第n项满足递推公式an=a(n-1)+a(n-2)+...+a(n-k)
数据结构02 - 斐波那契(Fibonacci)数列问题分析 - 简书 (jianshu.com)
利用循环队列编写求k阶斐波那契数列中前n+1项(f0, f1, f2,…, fn)的算法,要求满足:fn<=max,并且fn+1>max,其中max为某个约定的常数。(注意:本题所用循环队列的容量仅为k,则在算法执行结束时,留在队列中的元素应是所求k阶斐波那契序列中的最后k项fn-k-1 , fn-k, …, fn)。
化简一下,得到迭代公式:
①:f(m)=f(m-1)+f(m-2)+…+f(m-k)
②:f(m-1)=f(m-2)+f(m-3)+…+f(m-k-1)
①-②: f(m)-f(m-1)=f(m-1)-f(m-k-1)
f(m)=2f(m-1)-f(m-k-1)

浙公网安备 33010602011771号