题解:
这个题的常规思路很简单,就是写出来斐波那契数的表达式然后直接进行递归处理
斐波那契数列的标准公式为:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
根据公式可以直接写出:
public class Solution {
public int Fibonacci(int n) {
if(n==1){
return 1;
}
else if(n==0){
return 0
}
else
return Fibonacci(n-1) + Fibonacci(n-2);
}
}
可以看出来复杂度过高,首先我们来优化时间复杂度,很简单,因为递归有大量的重复运算,我们精简一些操作,具体精简可以看一下代码
public class Solution {
public int Fibonacci(int n) {
int ans[] = new int[40];
ans[0] = 0;
ans[1] = 1;
for(int i=2;i<=n;i++){
ans[i] = ans[i-1] + ans[i-2];
}
return ans[n];
}
}
看得出来,时间复杂度明显下降,我们再来进行精简