斐波那契数列(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*)
其实就是从第三个元素开始,下一个元素是前两个元素相加
知道其原理后,让我们求第n 个斐波那契数就很容易实现了
#include <stdio.h>
//斐波那契数列
//1 1 2 3 5 8 13 21 34...
int recursion(int n)
{
if (n <= 2)
return 1;
else
return recursion(n - 1) + recursion(n - 2);
}
//有缺陷,重复运算太多次数据,会拖慢运行速度
int Fion(int n)
{
int a = 1;
int b = 1;
int c = 1;
while (n > 2)
{
c = a + b;
a = b;
b = c;
n--;
}
return c;
}
//简单高效,建议使用非递归的方式来求斐波那契数列
int main()
{
int n = 0;
scanf("%d", &n);
int x = Fion(n);
printf("非递归:%d\n", x);
int ret = recursion(n);
printf("递 归:%d", ret);
return 0;
}
关于优缺点我都在代码里注释了