首页 > 其他 > 详细

斐波那契数

时间:2019-10-28 23:17:18      阅读:80      评论:0      收藏:0      [点我收藏+]

一、定义

??斐波那契数,又称黄金分割数列,是指数列:\(0,1,1,2,3,5,8,……\)。表示后一个数由前两个数的和组成,递归上定义为\(f[0]=0,f[1]=1,f[i]=f[i-1]+f[i-2]\)

二、通项公式

??接下来用推导斐波那契数的通项公式:

??假设常数s、r满足:

????\(f[n]-r*f[n-1]=s*(f[n-1]-r*f[n-2])\)

??再结合斐波那契数的定义,我们可以得到:

????\(r+s=1,rs=-1\)

??所以,对于\(n≥3\)时,有:

????\(f[n]-r*f[n-1]=s*(f[n-1]-r*f[n-2])\)

????\(f[n-1]-r*f[n-2]=s*(f[n-2]-r*f[n-3])\)

????\(……\)

????\(f[3]-r*f[2]=s*(f[2]-r*f[1])\)

??我们联立这n-2个式子,可以得到:

????\(f[n]-r*f[n-1]=s^{n-2}*(f[2]-r*f[1])\)

??因为:

????\(s=1-r,f[1]=f[2]=1\)

??所以可以化简:

????\(f[n]=s^{n-1}+r*f[n-1]\)

???????\(=s^{n-1}+r*s^{n-2}+r^2*f[n-2]\)

???????\(=s^{n-1}+r*s^{n-2}+r^2*s^{n-3}+r^3*f[n-3]\)

???????\(……\)

???????\(=s^{n-1}+r*s^{n-2}+r^2*s^{n-3}+……+r^{n-1}\)

??这就是一个以\(s^{n-1}\)为首项,\(r^{n-1}\)为末项,\(\frac{r}{s}\)为公比的等比数列,直接运用等比数列求和公式:

\[原式=\frac{s^{n-1}-r^{n-1}*\frac{r}{s}}{1-\frac{r}{s}}\]

\[=\frac{s^n-r^n}{s-r}\]

??因为前文求出的两个关于\(r、s\)的式子其中一组解为:

\[s=\frac{1+\sqrt{5}}{2},r=\frac{1-\sqrt{5}}{2}\]

??所以通项公式为:

\[f[n]=\frac{\sqrt{5}}{5}*[(\frac{1+\sqrt{5}}{2})^n-(\frac{1-\sqrt{5}}{2})^n]\]

例1

??给出以下定义在非负整数n下的递归关系:
\[f[n]= \begin{cases} f_0 \qquad \qquad \qquad \qquad n=0 \ f_1 \qquad \qquad \qquad \qquad n=1 \ a*f[n-1]+b*f[n-2] \qquad otherwise \end{cases} \]
??其中\(a、b\)是满足以下两个条件的常数:

??(一)\(a^2+4b>0\)

??(二)\(|a-\sqrt{a^2+4b}|≤2\)

??给出\(f_0,f_1,a,b,n\),求\(f[n]\)

?

??我们考虑直接暴推公式,用类似斐波那契数的方法求得公式为:

\[f[n]=\frac{s^n(f_1-mf_0)-r^n(f_1-kf_0)}{s-r}\]

??其中:

\[s、r=\frac{a±\sqrt{a^2+4b}}{2}\]

??直接快速幂求解就行了。

??然而推完式子后发现这实际上是复杂度理论上和矩阵快速幂一样的,而且矩阵快速幂好写很多,然后就不想写代码了。

斐波那契数

原文:https://www.cnblogs.com/fangbozhen/p/11755699.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!