目录
题目:
求斐波那契数列的第n项。思路:
先把已经得到的数列中间项保存起来,在下次需要计算的时候我们先查找一下,如果前面已经计算就不要在重复计算了。步骤:
1.首先根据f(0)和f(1)算出f(2)。2.再根据f(1)和f(2)算出f(3)......以此类推就可以算出第n项了。
代码:
package test;
public class Fibonacci {
public static void main(String[] args) {
System.out.println(fibo(5));
}
public static long fibo(int n) {
int[] result = {0, 1};
if(n < 2)
return result[n];
long fibNMinusOne = 1;
long fibNMinusTwo = 0;
long fibN = 0;
for (int i = 2; i <= n; i++) {
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
}
}
注:该算法的时间复杂度为O(n)。