早教吧 育儿知识 作业答案 考试题库 百科 知识分享

设(fn)是斐波那契数列,则f1=f2=1,fn=f(n-1)f(n-2),画出程序框图,表示输出斐波那契数列的前20项的算法.

题目详情
设(fn)是斐波那契数列,则f1=f2=1,fn=f(n-1) f(n-2),画出程序框图,表示输出斐波那契数列的前20项的算法.
▼优质解答
答案和解析
“斐波那契数列”的发明者,是意大利数学家列昂纳多·斐波那契(Leonardo Fibonacci,生于公元1170年,卒于1240年.籍贯大概是比萨).他被人称作“比萨的列昂纳多”.1202年,他撰写了《珠算原理》(Liber Abaci)一书.他是第一个研究了印度和阿拉伯数学理论的欧洲人.他的父亲被比萨的一家商业团体聘任为外交领事,派驻地点相当于今日的阿尔及利亚地区,列昂纳多因此得以在一个阿拉伯老师的指导下研究数学.他还曾在埃及、叙利亚、希腊、西西里和普罗旺斯研究数学.
斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21……
这个数列从第三项开始,每一项都等于前两项之和.它的通项公式为:(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}(又叫“比内公式”,是用无理数表示有理数的一个范例.)【√5表示根号5】
很有趣的是:这样一个完全是自然数的数列,通项公式居然是用无理数来表达的.
[编辑本段]【该数列有很多奇妙的属性】
比如:随着数列项数的增加,前一项与后一项之比越逼近黄金分割0.6180339887……
如果你看到有这样一个题目:某人把一个8*8的方格切成四块,拼成一个5*13的长方形,故作惊讶地问你:为什么64=65?其实就是利用了斐波那契数列的这个性质:5、8、13正是数列中相邻的三项,事实上前后两块的面积确实差1,只不过后面那个图中有一条细长的狭缝,一般人不容易注意到.
5、-2.4、2.6、0.2、2.8、3、5.8、8.8、14.6……等,你将发现随着数列的发展,前后两项之比也越来越逼近黄金分割,且某一项的平方与前后两项之积的差值也交替相差某个值.如果所有的数都要求是自然数,能找出被任意正整数整除的项的此类如果任意挑两个数为起始,比如5、-2.4,然后两项两项地相加下去,形成数列,必然是斐波那契数列的某项开始每一项的倍数,如4,6,10,16,26……(从2开始每个数的两倍).
斐波那契数列的第n项同时也代表了集合{1,2,...,n}中所有不包含相邻正整数的子集个数.
斐波那契数列(f(n),f(0)=0,f(1)=1,f(2)=1,f(3)=2……)的其他性质:
1.f(0)+f(1)+f(2)+…+f(n)=f(n+2)-1
2.f(1)+f(3)+f(5)+…+f(2n-1)=f(2n)-1
3.f(0)+f(2)+f(4)+…+f(2n)=f(2n+1)-1
4.[f(0)]^2+[f(1)]^2+…+[f(n)]^2=f(n)·f(n+1)
5.f(0)-f(1)+f(2)-…+(-1)^n·f(n)=(-1)^n·[f(n+1)-f(n)]+1
6.f(m+n)=f(m-1)·f(n-1)+f(m)·f(n)
7.[f(n)]^2=(-1)^(n-1)+f(n-1)·f(n+1)
8.f(2n-1)=[f(n)]^2-[f(n-2)]^2
9.3f(n)=f(n+2)+f(n-2)
在杨辉三角中隐藏着斐波那契数列
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
……
过第一行的“1”向左下方做45度斜线,之后做直线的平行线,将每条直线所过的数加起来,即得一数列1、1、2、3、5、8……
(1)细察下列各种花,它们的花瓣的数目具有斐波那契数:延龄草、野玫瑰、南美血根草、大波斯菊、金凤花、耧斗菜、百合花、蝴蝶花.
(2)细察以下花的类似花瓣部分,它们也具有斐波那契数:紫宛、大波斯菊、雏菊.
斐波那契数经常与花瓣的数目相结合:
3………………………百合和蝴蝶花
5………………………蓝花耧斗菜、金凤花、飞燕草
8………………………翠雀花
13………………………金盏草
21………………………紫宛
34,55,84……………雏菊
(3)斐波那契数还可以在植物的叶、枝、茎等排列中发现.例如,在树木的枝干上选一片叶子,记其为数0,然后依序点数叶子(假定没有折损),直到到达与那息叶子正对的位置,则其间的叶子数多半是斐波那契数.叶子从一个位置到达下一个正对的位置称为一个循回.叶子在一个循回中旋转的圈数也是斐波那契数.在一个循回中叶子数与叶子旋转圈数的比称为叶序(源自希腊词,意即叶子的排列)比.多数的叶序比呈现为斐波那契数的比.
(4)斐波那契数列与黄金比值
相继的斐波那契数的比的数列:
它们交错地或大于或小于黄金比的值.该数列的极限为.这种联系暗示了无论(尤其在自然现象中)在哪里出现黄金比、黄金矩形或等角螺线,那里也就会出现斐波那契数,反之亦然.
[编辑本段]【与之相关的数学问题】
1.排列组合.
有一段楼梯有10级台阶,规定每一步只能跨一级或两级,要登上第10级台阶有几种不同的走法?
这就是一个斐波那契数列:登上第一级台阶有一种登法;登上两级台阶,有两种登法;登上三级台阶,有三种登法;登上四级台阶,有五种登法……
1,2,3,5,8,13……所以,登上十级,有89种
2.数列中相邻两项的前项比后项的极限.
就是问,当n趋于无穷大时,F(n)/F(n+1)的极限是多少?
这个可由它的通项公式直接得到,极限是(-1+√5)/2,这个就是所谓的黄金分割点,也是代表大自然的和谐的一个数字.
3.求递推数列a(1)=1,a(n+1)=1+1/a(n).的通项公式.
由数学归纳法可以得到:a(n)=F(n+1)/F(n).将菲波那契数列的通项式代入,化简就得结果.
[编辑本段]【斐波那契数列别名】

斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”.
斐波那契数列
一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来.如果所有兔都不死,那么一年以后可以繁殖多少对兔子?
我们不妨拿新出生的一对小兔子分析一下:
第一个月小兔子没有繁殖能力,所以还是一对;
两个月后,生下一对小兔民数共有两对;
三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对;
------
依次类推可以列出下表:
经过月数:---0---1---2---3---4---5---6---7---8---9--10--11--12
兔子对数:---1---1---2---3---5---8--13--21--34--55--89-144-233
表中数字1,1,2,3,5,8---构成了一个数列.这个数列有关十分明显的特点,那是:前面相邻两项之和,构成了后一项.
这个特点的证明:每月的大兔子数为上月的兔子数,每月的小兔子数为上月的大兔子数,即上上月的兔子数,相加.
这个数列是意大利中世纪数学家斐波那契在<算盘全书>中提出的,这个级数的通项公式,除了具有a(n+2)=an+a(n+1)/的性质外,还可以证明通项公式为:an=1/√[(1+√5/2) n-(1-√5/2) n](n=1,2,3.)
[编辑本段]【斐波那挈数列通项公式的推导】
斐波那契数列:1,1,2,3,5,8,13,21……
如果设F(n)为该数列的第n项(n∈N+).那么这句话可以写成如下形式:
F(0) = 0,F(1)=F(2)=1,F(n)=F(n-1)+F(n-2) (n≥3)
显然这是一个线性递推数列.
通项公式的推导方法一:利用特征方程
线性递推数列的特征方程为:
X^2=X+1
解得
X1=(1+√5)/2, X2=(1-√5)/2.
则F(n)=C1*X1^n + C2*X2^n
∵F(1)=F(2)=1
∴C1*X1 + C2*X2
C1*X1^2 + C2*X2^2
解得C1=1/√5,C2=-1/√5
∴F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}【√5表示根号5】
通项公式的推导方法二:普通方法
设常数r,s
使得F(n)-r*F(n-1)=s*[F(n-1)-r*F(n-2)]
则r+s=1, -rs=1
n≥3时,有
F(n)-r*F(n-1)=s*[F(n-1)-r*F(n-2)]
F(n-1)-r*F(n-2)=s*[F(n-2)-r*F(n-3)]
F(n-2)-r*F(n-3)=s*[F(n-3)-r*F(n-4)]
……
F(3)-r*F(2)=s*[F(2)-r*F(1)]
将以上n-2个式子相乘,得:
F(n)-r*F(n-1)=[s^(n-2)]*[F(2)-r*F(1)]
∵s=1-r,F(1)=F(2)=1
上式可化简得:
F(n)=s^(n-1)+r*F(n-1)
那么:
F(n)=s^(n-1)+r*F(n-1)
= s^(n-1) + r*s^(n-2) + r^2*F(n-2)
= s^(n-1) + r*s^(n-2) + r^2*s^(n-3) + r^3*F(n-3)
……
= s^(n-1) + r*s^(n-2) + r^2*s^(n-3) +……+ r^(n-2)*s + r^(n-1)*F(1)
= s^(n-1) + r*s^(n-2) + r^2*s^(n-3) +……+ r^(n-2)*s + r^(n-1)
(这是一个以s^(n-1)为首项、以r^(n-1)为末项、r/s为公差的等比数列的各项的和)
=[s^(n-1)-r^(n-1)*r/s]/(1-r/s)
=(s^n - r^n)/(s-r)
r+s=1, -rs=1的一解为 s=(1+√5)/2, r=(1-√5)/2
则F(n)=(√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}
[编辑本段]【C语言程序】

main()
{
long fib[40] = {0,1};
int i;
for(i=2;i