剑指offer[7]——斐波那契数列
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
关于斐波那契额数列大家应该很清楚了,我在这里给大家举一个符合题目条件的例子:
由公式大家可以看出,在n
大于1的时候,其值等于前两项之和,根据这个思路我们可以写出递归与不递归两种算法
不递归
// 方法一
function Fibonacci(n)
{
if(n<=1){return n;}
let index = 2;
let res = [0, 1];
while(index-1 != n){
res.push(res[index-1]+res[index-2]);
index++;
}
return res[n];
}
// 方法二
function Fibonacci(n) {
let a = 0;
let b = 1;
while(n--!=0){
b = a + b;
a = b - a;
}
return a;
}
递归
// 这种结果递归深度太大,不推荐
function Fibonacci(n) {
return n<=1 ? n: Fibonacci(n-1)+Fibonacci(n-2);
}
我不管,JS天下第一