题解 | #斐波那契数列#

斐波那契数列

https://www.nowcoder.com/practice/aa8ffe28ec7c4050b2aa8bc9d26710e9

三种方式,各有各的好处

第一种方式:

<script type="text/javascript">
        // 填写JavaScript
        // 递归形式:重复计算量大
        function fibonacci(n) {
            if(n < 2){
                return n;
            }
            return fibonacci(n - 1) + fibonacci(n - 2);
        }
    </script>

第二种方式:

<script type="text/javascript">
        // 填写JavaScript
        // 动态规划形式: 避免很多重复计算,每次计算中间值都存在数组中
        function fibonacci(n){
            if(n < 2) return n;
            // 存储一下f(0)和f(1)的值到数组
            let dp = [0, 1];    
            // for循环每次值都为数组前两项索引相加
            for(let i = 2; i <= n; i++){
                dp[i] = dp[i - 1] + dp[i - 2];
            }
            return dp[n];
        }
    </script>

第三种方式:

<script type="text/javascript">
        // 填写JavaScript
        // 优化版本:相比动态规划我不需要用数组存储每次中间值,通过两个变量一直更新上一次和当前值,
        // 结果我只关心 current 得值
        function fibonacci(n){
            if(n < 2) return n;
            let prev = 0;   
            let current = 1;
            for(let i=2; i<=n; i++){
                // 下一次斐波那契数列的值
                const next = prev + current;    
                prev = current;     // 更新上一斐波那契数列的值
                current = next;     // 更新当前斐波那契数列的值
            }
            return current;
        }
    </script>
全部评论

相关推荐

11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务