【剑指Offer-循环和递归】面试题10:斐波那契数列
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
思路1
使用递归。
class Solution {
public:
int Fibonacci(int n) {
if(n==0)
return 0;
if(n==1)
return 1;
return Fibonacci(n-1) + Fibonacci(n-2);
}
};
但由于这个问题的递归的时间复杂度为指数(O(2^n)),牛客网上没有通过。
思路2
使用循环。
代码如下:
class Solution {
public:
int Fibonacci(int n) {
int a[] = {0, 1};
int ans = 0;
if(n<2)
return a[n];
for(int i=2; i<=n; i++){
ans = a[0] + a[1];
a[0] = a[1];
a[1] = ans;
}
return ans;
}
};