Loading

剑指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);
}
posted @ 2020-03-09 15:55  Jacob是我了  阅读(187)  评论(0编辑  收藏  举报