题目来源:牛客网
编程链接
斐波拉契数列的特点:
1,1,2,3,5,8,11….
后一个数等于前两个数之和,很多书在第一次介绍递归算法的时候都会介绍斐波拉契数列,
代码如下:
class Solution {
public:
int Fibonacci(int n) {
if(0 >= n)
return 0;
if(1 == n)
return 1;
return Fibonacci(n-1) + Fibonacci(n-2);
}
};
运行时间:711ms
占用内存:476k
这样特别费时间,主要是递归调用的时候,计算了很多重复的数。
改用循环:
class Solution {
public:
int Fibonacci(int n) {
if(0 == n)
return 0;
if(1 == n)
return 1;
long long Two = 1;
long long One = 0;
long long res = 0;
for(int i = 2;i<=n;i++)
{
res = One + Two;
One = Two;
Two = res;
}
return res;
}
};
运行时间:3ms
占用内存:484k