大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項爲0)。
分析:斐波那契數列的標準公式爲:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
數列如下:
0 1 1 2 3 5 8 13 21 34 55 89…
方法一(遞歸):
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 ( 2^n )
空間複雜度:O ( 1 )
方法二(循環):
public class Solution {
public int Fibonacci(int n) {
if(n==0){
return 0;
}
if(n==1){
return 1;
}
int[] arr=new int[n+1];
arr[0]=0;
arr[1]=1;
for(int i=2;i<=n;i++){
arr[i]=arr[i-1]+arr[i-2];
}
return arr[n];
}
}
時間複雜度: O ( n )
空間複雜度: O( n )
方法三(循環):
public class Solution {
public int Fibonacci(int n) {
if(n==0){
return 0;
}
if(n==1){
return 1;
}
int first=0;
int second=1;
int ret=0;
for(int i=2;i<=n;i++){
ret=second+first;
first=second;
second=ret;
}
return ret;
}
}
時間複雜度:O ( n )
空間複雜度:O ( 1 )