比萨的列奥纳多,又称斐波那契(Leonardo Pisano ,Fibonacci, Leonardo Bigollo,1175年-1250年),意大利数学家,西方第一个研究斐波那契数,并将现代书写数和乘数的位值表示法系统引入欧洲。13世纪意大利数学家斐波那契在他的《算盘书》中提出这样一个问题:有人想知道一年内一对兔子可繁殖成多少对,便筑了一道围墙把一对兔子关在里面。已知一对兔子每一个月可以生一对小兔子,而一对兔子出生后.第三个月开始生小兔子假如一年内没有发生死亡,则一对兔子一年内能繁殖成多少对? 现在我们寻求兔子繁殖的规律。成熟的一对兔子用记号"红方块表示",未成熟的用"黑方块"表示。"绿色线代表:延续和成长" "蓝色线代表:出生" 。 斐波那契数的原题为图片的下半部分:可以看出六个月兔子的对数是1,1,2,3,5,8,13。很容易发现这个数列的特点:即从第三项起,每一项都等于前两项之和。所以按这个规律写下去,便可得出一年内兔子繁殖的对数:1,1,2,3,5,8,13,21,34,55,89,144。可见一年内兔子共有144对(第一个月和第二个月都只有1对兔子)。 还有题中本质上有两类兔子:一类是能生殖的兔子,称为成年兔子;新生的兔子不能生殖;新生兔子一个月就长成成年兔子。求的是成年兔子与新生兔子的总和。每月新生兔对数等于上月成年兔对数。每月成年兔对数等于上个月成年兔对数与新生兔对数之和。 法国数学家比内(Binet)证明了通项公式为 F(1)=F(2)=1; F(n)=F(n-1)+F(n-2) (n≥3)。 我们用机算机C语言 可以对上半张图列出以下程序: #include "stdio.h" #include "conio.h" void main() { int i;long int f1,f2; f1=1,f2=2;//f1代表第一个月,f2代表第二个月 for(i=1;i<=6;i++) { printf("%12ld%12ld",f1,f2); f1+=f2; //斐波那契 系数为第一个月加第二个月等于第三个的值 f2+=f1; //斐波那契 系数为第一个月加第二个月等于第三个的值. if(i%3==0)printf("\n"); // 每行列出六个数. } } 人们为了纪念斐波那契,就以他的名字命名这个数列为斐波那契数列,该数列的每一项称为斐波那契数。斐波那契数列有许多有趣的性质。除了a(n)=a(n-1)+a(n-2)外,还可以证明它的通项公式为: a(n)=(((1+5^(1/2))/2)^n-((1-5^(1/2))/2)^n)/5^(1/2) 可它的每一项却都是整数。而且这个数列中相邻两项的比值,越靠后其值越接近0.618黄金比例。这个数列有广泛的应用,如树的年分枝数目就遵循斐波那契数列的规律;而且计算机科学的发展,为斐波那契数列提供了新的应用场所。 而用计算机c++语言的解决方法: #include<iostream> using namespace std; int main() { int i,a[30]={0,1,1};//数组的定义,用来储存数据 for(i=3;i<30;i++) { a[i]=a[i-1]+a[i-2];//Fibonacci的算术方程 } for(i=1;i<30;i++) { printf("a[%d]=%d\n",i,a[i]);//输出 } } 用计算机Java语言的解决方法(递归): public static void main(String[] args) { long f1 = 1; long f2 = 1; long fn = 1; for (int i = 3; i < 50; i++) { fn = f1 + f2; f2 = f1; f1 = fn; System.out.println(i + "," + fn); } } |
|