您的位置:首页 > 其它

斐波那契数列的应用

2016-02-10 16:04 211 查看
[code]    斐波那契以兔子繁殖为切入,提出一个古典问题: 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 
    其数列是0、1、1、2、3、5、8、13、21、34、…… 
    在数学上,斐波纳契数列以如下被以递归的方法定义: F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)

    我刚好前几天看到google的一个面试题,题目是这样的:
    假设你正在爬M阶楼梯,每次你只能爬一阶或者两阶,你能有多少种不同的方法爬到楼顶部? 
    其实,这完全可以运用到斐波那契数列。
    以A(M)表示M阶阶梯所需要的step。
    那么快爬完楼梯的时候,最后一步无非两种情况,一种:只需要迈一阶即可。另一种:只需要迈两阶即可爬完楼梯。
 于是A(M)=A(M-1)+A(M-2)
    A(M-1)=A(M-2)+A(M-3)
    A(M-2)=A(M-3)+A(M-4) 
    ………
    而当M=1时 A(1)=1 M=2时 A(2)=2
    这样便可以递归出A(3),A(4)……直到A(M)
    符合斐波那契数列特点:F(n)=F(n-1)+F(n-2)
    此题便解出。

    爬楼梯问题的推广:
    特例: 那么如果步子不仅仅是一阶或者二阶,假设一步至多迈M阶,
    则 A(M)=A(M-1)+A(M-2)+…..+A(1)+A(0)
     A(0)表示之前没迈一步,之后一步迈完M阶
     A(0)=1;A(1)=1,A(2)=2;
     递推得: A(3)=A(2)+A(1)+A(0) =4
             A(4)=A(3)+A(2)+A(1)+A(0) =8
             A(5)=A(4)+A(3)+A(2)+A(1)+A(0) =16
             …
         得A(M)=2^(M-1);

      推广: M阶楼梯,假设一步迈N阶
       当(1《N《M) 即一步至多M阶,同特例 由特列知 A(M)=2^(M-1);
       当(1《N<M)  即一步至多N阶 
       A(M)=A(M-1)+A(M-2)+…..+A(M-N)         
       递归可得A(M)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: