public class Solution {
public int Fibonacci(int n) {
if(n==0){
return 0;
}
if(n==1){
return 1;
}
Solution s =new Solution();
return s.Fibonacci(n-1)+Fibonacci(n-2);
}
}
中间变量
public class Solution {
public int Fibonacci(int n) {
if(n==0)
return 0;
if(n==1)
return 1;
int last =1;
int lastlast =0;
int res =1;
for(int i=2;i<=n;i++){
res = last +lastlast;
lastlast=last;
last =res;
}
return res;
}
}
dp方程
public class Solution {
public int Fibonacci(int n) {
if(n==0)
return 0;
if(n==1)
return 1;
//以上两句不能少 不然直接赋值时F(0) 数组下标越界
int[] dp = new int[n+1];
dp[0]=0;dp[1]=1;
for(int i=2;i<=n;i++){
dp[i]=dp[i-1]+dp[i-2];
}
return dp[n];
}
}