美文网首页
学习斐波那契数列的方法

学习斐波那契数列的方法

作者: 小小小小的人头 | 来源:发表于2020-03-08 21:33 被阅读0次

    今天记录一波面试。虽然被虐但是很爽。why? because I will get knowledge~(还是太菜)
    什么是斐波那契数列,1,1,2,3,5,8,13...这样一个数列就是斐波那契数列,求第n项的值。

    分析

    从上文的数据中可以看出。我们所有的值都是前2项相加而来。所以我们要得到值的方式是 这样的f(n) = f(n-1) +f(n-2) 这样就很清晰了。 上手写吧~
    大白话:使用递归-不断去得到前2个的值-最终返回一堆 1 、 0 相加 即可得到我们输入n所对应的value

    //tips:写的时候我们需要初始化好我们考试的数据。因为我们开始数据是 1  1 
    function f1(n) {
        if(n < 1) {
            return 0;
        }else if(n == 1 || n == 2) {
            return 1;
        }
        return f1(n-1) + f1(n-2);
    

    方法二实现

    上面方法我们是使用递归的思路。当然我们还可以使用循环得到我输入n前2个的数字 相加即可这是不是暴力解法呢?
    大白话:我们需要使用到1个变量temp 在循环中用来存储当前的res值-每次计算都需要额外去更新pre的值(可以理解为前一个值) res 只需要计算当前自己和前1个的和

    //tip: 我们依旧需要初始话好1 1   循环我们从第3个开始即可-不断累加
    function f2( n) {
        if(n < 1) {
            return 0;
        }else if(n == 1 || n == 2) {
            return 1;
        }
        let res = 1;
        let pre = 1;
        let temp = 0;
        for(let i = 3; i <= n; i++) {
            temp = res;
            res = pre + res;
            pre  = temp;
        }
        return res;
    }
    

    感悟:被虐也是一种学习~

    相关文章

      网友评论

          本文标题:学习斐波那契数列的方法

          本文链接:https://www.haomeiwen.com/subject/zqojdhtx.html