分类: 理工学科
解析:
“斐波那契数列”的发明者,是意大利数学家列昂纳多·斐波那契(Leonardo Fibonacci,生于公元1170年,籍贯大概是比萨,卒于1240年后)。他还被人称作“比萨的列昂纳多”。1202年,他撰写了《珠算原理》(Liber Abaci)一书。他是第一个研究了印度和 数学理论的欧洲人。他的父亲被比萨的一家商业团体聘任为外交领事,派驻地点相当于今日的阿尔及利亚地区,列昂纳多因此得以在一个 老师的指导下研究数学。他还曾在埃及、叙利亚、希腊、西西里和普罗旺斯研究数学。
《达·芬奇密码》中还提到过这个斐波那契数列
菲波那契数列指的是这样一个数列:
1,1,2,3,5,8,13,21……
这个数列从第三项开始,每一项都等于前两项之和
它的通项公式为:[(1+√5)/2]^n /√5 - [(1-√5)/2]^n /√5 √5表示根号5
很有趣的是:这样一个完全是自然数的数列,通项公式居然是用无理数来表达的。
该数列有很多奇妙的属性
比如:随着数列项数的增加,前一项与后一项之比越逼近黄金分割0……
还有一项性质,从第二项开始,每个奇数项的平方都比前后两项之积多1,每个偶数项的平方都比前后两项之积少1
如果你看到有这样一个题目:某人把一个88的方格切成四块,拼成一个513的长方形,故作惊讶地问你:为什么64=65?其实就是利用了斐波那契数列的这个性质:5、8、13正是数列中相邻的三项,事实上前后两块的面积确实差1,只不过后面那个图中有一条细长的狭缝,一般人不容易注意到
如果任意挑两个数为起始,比如5、-24,然后两项两项地相加下去,形成5、-24、26、02、28、3、58、88、146……等,你将发现随着数列的发展,前后两项之比也越来越逼近黄金分割,且某一项的平方与前后两项之积的差值也交替相差某个值
用递归不就好了?
int Fib(int n)
{
if(n==0) return 0;
if(n==1) return 1;
return Fib(n-1)+Fib(n-2);
}
void main()
{
printf("%d\n",Fib(10));
}
#include<stdioh>
int main()
{
int f[20]={1,1},i;
for(i=2;i<20;i++)
f[i]=f[i-1]+f[i-2];
for(i=0;i<20;i++)
{
printf("%d\t",f[i]);
if((i+1)%5==0)
printf("\n");
}
getchar();
return 0;
}
#include <stdioh>
int main(void)
{
unsigned int f1 = 1, f2 = 1, f;
int n;
int i;
printf("输入n的值:");
scanf("%d", &n);
printf("%12u%12u", f1, f2);
for (i = 3; i <= n; ++i)
{
printf("%12u", f = f1+f2);
f1 = f2;
f2 = f;
if (i % 4 == 0)
printf("\n");
}
printf("\n");
return 0;
}
这个问题充分利用了参数传递中形参与实参的对应关系进行参数运算,原理是这样的。
fib(n-1)中的参数经历了如下的运算变化:a=a+b,b=a,n--
如果a,b初值为1则,可以看作是数列的前两项,第三项b为2,以此类推:下一个b值为:a=1+2,b=a=3;n--
………………
直到n为零为此,以此计算出n项的值。
以上就是关于什么是菲波那切数列啊全部的内容,包括:什么是菲波那切数列啊、写出计算(输出)Fibonacci数列前n项的函数,并在主函数main()中进行调用测试、c语言:求fibonacci数列中前20个数,fibonacci数列的前两个数为1、1,以后每一个等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)