斐波那契数列
描述
要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。
解题
Solution
/**
* 斐波那契数列
* 1.递归 2.动态规划 3.优化存储
*/
public class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
System.out.println(solution.Fibonacci4(4));
}
public int Fibonacci(int n){
if (n==0||n==1) return n;
return Fibonacci(n-1)+Fibonacci(n-2);//递归
}
public int Fibonacci2(int n){
if (n==0||n==1) return n;
int[] num = new int[n+1];//数组存储
num[0]=0;
num[1]=1;
for (int i = 2; i < n+1; i++) {
num[i]=num[i-1]+num[i-2];
}
return num[n];
}
public int Fibonacci3(int n){
if (n==0||n==1) return n;
int a=0,b=1,c=1;//优化存储
for (int i = 2; i <=n ; i++) {
c=a+b;
a=b;
b=c;
}
return c;
}
public int Fibonacci4(int n){
if (n==0||n==1) return n;
int a=0,b=1;//持续优化存储
for (int i = 2; i <=n ; i++) {
b=a+b;
a=b-a;
}
return b;
}
}