JZ07-斐波那契数列
斐波那契数列
https://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3?tpId=13&tags=&title=&diffculty=0&judgeStatus=0&rp=1&tab=answerKey
class Solution {
//递归,耗资源,需要太多重复计算
public int Fibonacci(int n) {
if (n < 0) {
return -1;
}
if (n <= 1) {
return n;
}
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
//三个变量abc
public int Fibonacci2(int n) {
if (n < 0) {
return -1;
}
if (n <= 1) {
return n;
}
int c = 0;
int a = 0;
int b = 1;
for (int i = 2; i <= n; i++) {
c = a + b;
a = b;
b = c;
}
return c;
}
//两个变量abc
public int Fibonacci3(int n) {
int a = 1;
int b = 1;
if (n <= 0)
return 0;
if (n == 1 || n == 2) {
return 1;
}
String[] s = new String[]{"aaa", "bbb"};
while (n > 2) {
b += a; //重新定义b。相当于 c = a + b且 b = c
a = b - a; //重新定义a. 相当于a = b = c - a
n--;
}
return b;
}
//开辟数组dp
public int Fibonacci4(int n) {
if (n < 0) {
return -1;
}
int[] temp = new int[n + 1];
temp[0] = 0;
temp[1] = 1;
for (int i = 2; i <= n; i++) {
temp[i] = temp[i - 1] + temp[i - 2];
}
return temp[n];
}
}
查看10道真题和解析