斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从 1963 年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。
-摘自百度
参考代码我们可以观察斐波那契数列,可以发一个规律,从第三项开始,当前项都是前两项之和 1、1、2、3、5…
了解规律之后,我们就好写多了,先判断是否是前两项,是,则直接输出1,不是,则将前两项加起来。
#include递归实现//递归求第n个斐波那契数 int main() { int n; scanf("%d", &n); int n1, n2,n3; n1 = 1; n2 = 1; n3 = 0; if (n ==1 || n == 2)\不能图麻烦,直接写成n<=2 { printf("%d ", n1); return 0; } for (int i = 3; i <= n; i++) { n3 = n1 + n2; n1 = n2; n2 = n3; if (i == n) { printf("%d ", n3); } } return 0; }
int fib(int n)
{
if (n ==1 || n == 2)
return 1;
return fib(n - 1) + fib(n - 2);
}
int main()
{
int n;
scanf("%d", &n);
int ret = fib(n);
printf("%d ", ret);
return 0;
}
递归实现,我是想不出来,但是通过画流程图发现的确可以求出对应的斐波那契数。
可以这么理解吗,当n大于2时,说明他不是前两项,那么这项就可以通过前两项相加得到。一直递归到n等2或者等于1时,再相加。



