题目
输入一个整数 n ,求斐波那契数列的第 n 项。
假定从0开始,第0项为0。(n<=39)
样例
输入整数 n=5
返回 5
算法:
(递推) O(n)
这题的数据范围很小,我们直接模拟即可。
当数据范围很大时,就需要采用其他方式了,可以参考 求解斐波那契数列的若干方法 。
用两个变量滚动式得往后计算,a 表示第 n−1 项,b 表示第 n 项。
则令 c=a+b表示第 n+1 项,然后让 a,b顺次往后移一位。
时间复杂度分析
总共需要计算 n次,所以时间复杂度是 O(n)。
class Solution {
public int Fibonacci(int n) {
int a0 = 0;
int a1 = 1;
while(n-- > 0){
int res = a0 + a1;
a0 = a1;
a1 = res;
}
return a0;
}
}
递归
时间复杂度O(2^n)
class Solution {
public int Fibonacci(int n) {
if(n < 2) return n;
return Fibonacci(n-1)+Fibonacci(n-2);
}
}