题目
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39
思路一 递归
时间复杂度非常高
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);
}
}
思路二 记忆化搜索递归
public class Solution {
int flag[]=new int[40];
public int Fibonacci(int n) {
if(n==0) return 0;
if(n==1) return 1;
if(flag[n]==0)
flag[n]=Fibonacci(n-1)+Fibonacci(n-2);
return flag[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;
for(int i=2;i<=n;i++){
int temp=first+second;
first=second;
second=temp;
}
return second;
}
}
其他的题题解
剑指offer题解 java版