斐波那契数列默认前两项是0, 1,后面每一项数字都是其前面两项数字的和。
0, 1, 1, 2, 3, 5, 8…
关于斐波那契数列,一般情况下,我们首先想到的都是递归实现。
public static int Fibonacci(int n) {
if (n <= 1) {
return n;
} else {
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}
但是由于递归实现时重复计算次数太多,当n很大时要耗时很久,时间复杂度随n呈指数形式增加。所以可行性不高。
第二种做法,我们直接使用循环累加,每一项都等于它前面两项的和。
public static int Fibonacci(int n) {
if (n <= 1)
return n;
int firstItem = 0;
int secondItem = 1;
int fib = 0;
for (int i = 2; i <= n; i++) {
fib = firstItem + secondItem;
firstItem = secondItem;
secondItem = fib;
}
return fib;
}
时间复杂度为O(n).