比萨的列奥纳多,又称斐波那契(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);
}
}
联系客服