斐波那契数通过递归实现的时间复杂度是O(2^n),空间复杂度为O(n);【递归效率低】
非递归迭代实现时时间复杂度为O(n),空间复杂度为O(1);也是最优算法。递归实现:
int Fib(size_t n)
{
if (n < 3)
{
return n-1;
}
return Fib(n - 1) + Fib(n - 2);
}
非递归实现:
int Fib(size_t n)
{
int a1 = 0, a2 = 1,a3;
if (n == 0)
{
return -1;
}
if (n ==1)
{
return a1;
}
if (n == 2)
{
return a2;
}
for (size_t i = 3; i <= n; i++)
{
a3 = a1 + a2;
a1 = a2;
a2 = a3;
}
return a3;
}