斐波那契数列


1 什么是斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列: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*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用。

                                                    ——摘自百度百科

通项公式:an=an-1+an-2

 

2 公式的应用:

黄金分割

随着数列项数的增加,前一项与后一项之比越来越逼近 黄金分割的数值 0.6180339887..…

杨辉三角

杨辉三角左对齐,将同一斜行的数加起来,即得一数列 1、1、2、3、5、8

矩形面积

斐波那契数列与矩形面积的生成相关,数列前几项的平方和可以看做不同大小的正方形,由于斐波那契的递推公式,它们可以拼成一个大的矩形。这样所有小正方形的面积之和等于大矩形的面积。

尾数循环

斐波那契数列的个位数:一个60步的循环,进一步,最后两位数是一个300步的循环,最后三位数是一个1500步的循环,最后四位数是一个15000步的循环,最后五位数是一个150000步的循环。

自然界中“巧合”

树木生长时的枝条,生物学上著名的“鲁德维格定律”。
一些花的花瓣数也程斐波那契数列:百合花花瓣数目为 3,梅花 5 瓣,飞燕草 8 瓣,万寿菊 13 瓣,向日葵 21 或 34 瓣,雏菊有 34、55 和 89 三个数目的花瓣。
斐波那契螺旋。
等等
                                                                   ——摘自百度百科

可见,斐波那契数列应用广泛。

3 程序实现:

利用C递归实现斐波那契数列:

 

#include <stdio.h>
int Fibonaci(int n){
    if(n<=0)
        return 0;
    if(n<=3)
        return 1;
    int v;
    v=Fibonaci(n-1)+Fibonaci(n-2);
    return v;
}
int main()
{
    int number;
    scanf("%d",&number);
    if (number<0)
        printf("error");
    else
    {
        int a=0;
        a=Fibonaci(number);
        printf("%d",a);
    }
    return 0;
}

 

利用python递归实现斐波那契数列:

 

 1 def fabonacqi(n):
 2     if n <= 0:
 3         return 0
 4     elif n <= 2:
 5         v = 1
 6         return v
 7     v = fabonacqi(n - 1) + fabonacqi(n - 2)
 8     return v
 9 
10 a=int(input())
11 if a<0:
12     print("error")
13 else:
14     print(fabonacqi(a))

 

4 递归函数:

编程语言中,函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数。

优点结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大方便。
缺点
递归算法的运行效率较低,无论是耗费的计算时间还是占用的存储空间都比非递归算法要多。例如递归算斐波那契数列,number=50,就运行的很慢了,但是如果用递推,就会快很多。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM