第七题 斐波那契数列
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
分析
一看到这道题,想到的就是用递归来做,递归代码慢,因为重复的计算太多。
改进:把已经得到的数列中间项保存起来,下次需要计算的时候先去查找一下,如果前面已经计算过就不用再重复计算了
function Fibonacci(n)
{
// write code here
var arr=[0,1],
one=0,
two=1,
sum=0;
if(n<2)return arr[n];
for(var i=2;i<=n;i++){
sum=one+two;
one=two; //保存
two=sum; //保存
}
return sum;
}
递归的解法虽然很直观但时间效率低,在实际软件开发中不会使用这种方法,也不可能得到面试官的青睐;
这种方法把递归的算法用循环实现,极大地提高了时间效率。时间复杂度是O(n)
知识点:递归
关键点:已经计算过的存起来
参考《剑指Offer》