首页 > 代码库 > 斐波那契的两种实现方式

斐波那契的两种实现方式


    斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1960年代起出版了《斐波纳契数列》季刊,专门刊载这方面的研究成果。


#include<stdio.h>
/*
解决斐波那契数列问题:
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
特别指出:0是第0项,不是第1项。
这个数列从第二项开始,每一项都等于前两项之和。fn=fn(n-1)+fn(n-2);
*/
void array();
int  recursion(int n);
void  main()
{
	printf("----------用数组输出数列前40项的值-----------------\n");
	array();
	printf("----------用递归输出数列第6项的值-----------------\n");
	printf("%d\n",recursion(6));
	system("pause");

}
//用的递归实现
int recursion(int n)
{
	if (n == 1 || n == 2)
	{
		return 1;
	}
	else
	{
		return recursion(n - 1) + recursion(n - 2);
	}
}



//用数组模拟前四十项的值
void array()
{
	int a[40];
	a[0] = 1;//下表为1,代表数列的第一项
	a[1] = 1;
	printf("%d\n",a[0]);
	printf("%d\n", a[1]);
	for (int i = 2; i <40; i++)
	{
		a[i] = a[i - 1] + a[i - 2];
		printf("%d\n", a[i]);
	}


}



运行结果:


接上: