什么是斐波那契数列?
斐波那契数列(Fibonacci sequence)
以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
例如:0、1、1、2、3、5、8、13、21、34、55、89、144、233、377、610、987、1597......
非递归方法的代码实现:
非递归法的时间复杂度为O(N)
#include<stdio.h>
int Fib(n)
{
int a[100];
a[0] = 0;
a[1] = 1;
for (int i = 2; i <= n; i++)
{
a[i] = a[i - 1] + a[i - 2];
}
return a[n];
}
void main()
{
int n;
scanf("%d", &n);
printf("%d", Fib(n));
}
递归方法的代码实现:
递归法的时间复杂度为O(2^N),效率太低,所以建议使用非递归法来进行斐波那契数列的计算。
#include<stdio.h>
int Fib(n)
{
if (n == 0)
return 0;
if (n == 1 || n == 2)
return 1;
else
return Fib(n - 1) + Fib(n - 2);
}
void main()
{
int n;
scanf("%d", &n);
printf("%d", Fib(n));
}