数组中保存计算第n个斐波那契数的n-1的值,与n-2个值,便于计算;
F1:
public class Solution {
public int Fibonacci(int n) {
//n = 1 ,2 时直接返回
if(n == 1 || n == 2){
return 1;
}
//大于2时,创建长度为2 的数组,初始值为1
int[] ints = {1,1};
//count表示已经计算出的数的个数,由于1,2时为1,所以count初始值为2
int count = 2;
//循环只要count的值小于n,那么就说明第n个斐波那契数还没有被计算出来
for (int i = 2; count < n ; count += 2) {
//更新数组中的下标1,2的值
ints[0] += ints[1];
ints[1] += ints[0];
}
//如果是偶数返回下标1的值
if (n % 2 == 0){
return ints[1];
}
//如果是奇数返回下标0的值;
return ints[0];
}
}
F2:递归调用函数,时间复杂度,空间复杂度较高;
public class Solution {
public int Fibonacci(int n) {
if(n == 1 || n == 2){
return 1;
}
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}