题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39
思路分析:
这道题目对大家来说应该都不陌生,第一种能想到的解决方案就是用递归实现。但是用递归实现的方法,会需要多次计算重复的数值,而且随着n的增大而急剧增加。改进递归方法的很简单,我们只要想办法避免重复计算就可以了,最简单的办法是从下往上计算,首先根据Ff(0)和f(1)计算得到f(2),再根据f(1)和f(2)算出f(3)……以此类推算出第n项。
解决:
方案一、递归方法(不推荐)
public class Solution {
public int Fibonacci(int n) {
if(n <= 0)
return 0;
if(n == 1)
return 1;
return Fibonacci(n-1)+Fibonacci(n-2);
}
}
方案二、循环方法(推荐,时间复杂度为O(n))
public class Solution {
public int Fibonacci(int n) {
int result = 0;
int preOne = 0;
int preTwo = 1;
if(n == 0)
return preOne;
if(n == 1)
return preTwo;
for (int i = 2; i <= n; i++){
result = preOne + preTwo;
preOne = preTwo;
preTwo = result;
}
return result;
}
}