题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项
思路:考虑到第 i 项只与第 i-1 和第 i-2 项有关,因此只需要存储前两项的值就
能求解第 i 项,从而将空间复杂度由 O(N) 降低为 O(1)。
首先根据f(0)和f(1)算出f(2),在根据f(1)和f(2)算出f(3).....以此类推就可以算出
第N项。这种思路的时间复杂度为O(n).
代码如下
public int Fibonacci(int n){
if (n <= 1)
return n;
int pre2 = 0.pre1 = 1;
int fib = 0;
for (int i = 2;i <= n;i++){
fib = pre2 + pre1;
pre2 = pre1;
pre = fib;
}
return fib;
}