斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
思路
想到的简单的方法就是递归,但是跑不通。重复计算太多,时间复杂度为2^n,(2的n次方)
function Fibonacci(n)
{
/* 方法一 递归,但是容易出现调用栈溢出的情况*/
if(n<=0) return 0;
if(n===1) return 1;
return Fibonacci(n-1)+Fibonacci(n-2);
}
可以用动态规划自底向上计算,首先根据f(0)和f(1)算出f(2),再根据f(1)和f(2)算出f(3)… …以此类推算出第n项,时间复杂度是O(n)。
代码
function Fibonacci(n)
{
// write code here
var pre = 0;
var next = 1;
var fib = 0;
if(n<=0){
return pre;
}
if(n==1){
return next;
}
for(var i=1;i<n;i++){
fib = pre + next;
pre = next;
next = fib;
}
return fib;
}