Fibonacci的数列的通项公式是:F(0)=1,F(1)=1,F(n)=F(n-1)+F(n-2) (n>=2)。
对于F(n)的求值,通常的做法是进行递归运算。但是,它的时间复杂度是呈现指数级增长的,随着输入规模n的增大,会严重影响效率。
其实,我们可以通过较小的存储来减少大量的重复计算,从而大大地提高运算效率。具体代码如下:
public int fibonacci(int n) { int[] added = new int[]{1, 1}; for (int i = 0; i <= n - 2; i++) { added[0] = added[0] + added[1]; added[1] = added[0] - added[1]; } return added[0]; }