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,就运行的很慢了,但是如果用递推,就会快很多。