• 斐波那契数列


    1202年,意大利数学家斐波那契(Leonardo Fibonacci,约1170—1250)出版了他的《算盘全书(Liber Abacci)》。他在书中提出了一个关于兔子繁殖的问题:

    如果一对兔子每月能生1对小兔子(一雄一雌)。而每1对小兔子在它出生后的第三个月里,又能生1对小兔子,假定在不发生死亡的情况下,由1对初生的小兔子开始,50个月后会有多少对兔子?

    在第1个月时,只有1对小兔子,过了1个月,那对兔子成熟了,在第3个月时便生下1对小兔子,这时有两对兔子,再过1个月,成熟的兔子再生1对小兔子,而另1对小兔子长大,有3对小兔子。如此推算下去,我们可以得到一个表格:

    [egin{array}{c|c|c|c}hline 时间(月)&初生兔子(对)&成熟兔子(对)&总兔子数(对) \ hline1&1&0&1 \ hline2&0&1&1 \ hline 3&1&1&2 \ hline 4&1&2&3 \ hline 5&2&3&5 \ hline 6&3&5&8 \ hline 7&5&8&13 \ hline 8&8&13&21 \ hline 9&13&21&34 \ hline 10&21&34&55 \ hlineend{array} ]

    由此可知。从第1个月开始,以后每个月的兔子总对数是

    [1,1,2,3,5,8,13,21,34,55,89,144,233,cdots ]

    你发现这个数列的规律了吗?

    如果用 (F_n) 表示第 (n) 个月的兔子的总对数,可以看出,

    [F_n=F_{n-1}+F_{n-2} ]

    这是一个由递推关系给出的数列,称为斐波那契数列

    现用特征根法求该数列的通项公式

    由递推公式得特征方程为

    [x^2-x-1=0 ]

    解得

    [x_1=dfrac{1+sqrt5}{2},x_2=dfrac{1-sqrt5}{2} ]

    [F_n=Acdotleft(dfrac{1+sqrt5}{2} ight)^n+Bcdotleft(dfrac{1-sqrt5}{2} ight)^n ]

    (F_1=F_2=1) 代入得

    [egin{cases}Acdotleft(dfrac{1+sqrt5}{2} ight)+Bcdotleft(dfrac{1-sqrt5}{2} ight)=1 \[2ex] Acdotleft(dfrac{1+sqrt5}{2} ight)^2+Bcdotleft(dfrac{1-sqrt5}{2} ight)^2=1end{cases} ]

    解得

    [egin{cases}A=dfrac{1}{sqrt5} \[2ex] B=-dfrac{1}{sqrt5}end{cases} ]

    所以

    [F_n=dfrac{1}{sqrt5}left[left(dfrac{1+sqrt5}{2} ight)^n-left(dfrac{1-sqrt5}{2} ight)^n ight] ]

  • 相关阅读:
    调用网易有道词典api
    函数设计
    参数2
    新浪微博API使用初步介绍——解决回调地址的问题
    参数关键点和return返回多个(伪多个)值问题
    函数基本理论
    一个值得思考的例子
    Beego基础学习(五)Golang原生sql操作Mysql数据库增删改查(基于Beego下测试)
    Golang利用select实现超时机制
    Golang利用select和普通函数分别实现斐波那契数列
  • 原文地址:https://www.cnblogs.com/lbyifeng/p/12316005.html
Copyright © 2020-2023  润新知