09_斐波那契数列
2020-05-18 本文已影响0人
是新来的啊强呀
要求:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39
分析:斐波那契数列的标准公式为:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
方法一:递归法,直接根据公式写出,时间复杂度:O(2^n),空间复杂度:O(1)
方法二:我们可以将递推式的求解从自顶向下改为自底向上(循环实现)。简而言之,我们已知前两项的值,然后我们就可以用前两项的值求出第3项的值,接着求第4、第5、……,直到求出第n项的值。时间复杂度和空间复杂度:O(n)、O(n)
// 方法一,递归法
public int Fibonacci(int n) {
// 退出条件
if (n == 0) return 0;
if (n == 1) return 1;
return Fibonacci(n-1) + Fibonacci(n-2);
}
// 方法二,递归会重复计算大量相同数据,我们用个数组把结果存起来
public static int[] Fibonacci(int n){
int[] f = new int[n];
f[0] = 0;
f[1] = 1;
for(int i = 2;i<n;i++){
f[i] = f[i-1] +f[i-2];
}
return f;
}