斐波那契数列
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。
求斐波那契数可以用两种方式实现,分别是递归和循环。两种方式各有特点:递归实现节省空间但是相对循环实现耗时更多。
1.递归实现:
class Solution {
public:
int fib(int N) {
if(N==0)
return 0;
if(N==1)
return 1;
return fib(N-1) + fib(N-2);
}
};
2.循环实现:
class Solution {
public:
int fib(int N) {
int arr[110];
arr[0]=0,arr[1]=1;
if(N==0)
return 0;
if(N==1)
return 1;
for(int i=2;i<N;i++)
arr[i] = (arr[i-1] + arr[i-2])%(int)(1e9+7);
return arr[N]%1000000007;
}
};