题目
解法一:递归
public class Solution {
public int Fibonacci(int n) {
if(n==1||n==2)
return 1;
else {
return Fibonacci(n-1)+Fibonacci(n-2);
}
}
}
解法二:记忆化搜索
public class Solution {
int[] f=new int[40];
public int Fibonacci(int n) {
if(n==1||n==2)
return 1;
if(f[n]!=0)
return f[n];
else {
return Fibonacci(n-1)+Fibonacci(n-2);
}
}
}
解法三:动态规划
分析:
public class Solution {
public int Fibonacci(int n) {
if(n==1||n==2)
return 1;
int a,b,temp = 0;
a=b=1;
for (int i = 3; i <=n; i++) {
temp=a+b;
a=b;
b=temp;
}
return temp;
}
}
三种算法效率比较: