入门
剑指 Offer 10- I. 斐波那契数列
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
题解:
最初代码
function Fibonacci(n)
{
// write code here
if (n === 0 || n === 1)
{
return n;
}
else{
return Fibonacci(n-2)+Fibonacci(n-1);
}
}
结果:超时
复杂度:
时间复杂度为(二叉树的节点个数):O()=( 2n)-1=2n。
空间复杂度为树的高度:n即o(n).
优化时间复杂度:
非递归
var fib = function(n) {
var arr = new Array();
arr[0]=0;
arr[1]=1;
for ( var i