最近在刷算法题,发现之前写的斐波那契数列,用的是递归方式,感觉不是很好,尝试一下用别的方法。总共有4种,话不多说,贴代码。
法一:递归,时间复杂度是指数级。
public 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(n)。
public class Solution { //这题尽量用循环,不要用递归
public int Fibonacci(int n) {
if(n==0)
return 0;
if(n==1)
return 1;
int one=0;
int two=1;
int N=0;
for(int i=2;i<=n;i++){
N=one+two;
one=two;
two=N;
}
return N;
}
}
法三:斐波那契通项公式:,时间复杂度O