zoukankan      html  css  js  c++  java
  • (剑指offer)斐波那契数列

    牛客网:

    大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。

    n<=39

    解题思路:这里如果用递归的话时间复杂度和空间复杂度都会很高

    function Fibonacci(n){
        if(n == 0 || n == 1) {
            return n
        }
        return Fibonacci(n-1) + Fibonacci(n-2)
    }

    所以我们用迭代的方法

    迭代相加,并保存需要不断相加的两个数

    function Fibonacci(n){
        // write code here
        let f1 = 1
        let f2 = 1
        if(n<=0){
            return 0
        }
        if(n == 1 || n== 2) {
            return 1
        }
        while(n-- > 2){
            f1 = f1+f2
            f2 = f1 - f2
        }
        return f1
    }

    leetcode:

    斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。

    答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

    var fib = function(n) {
        if(n == 0 || n ==1) {
            return n
        }
        let a = 1, b =0
        while (n-- > 1){
            a = a+b
            b = a-b
            a %= 1000000007
        }
        return a
    };
    不积跬步无以至千里
  • 相关阅读:
    syslog
    setting-url配置
    计划任务_crontab
    css
    git之一: git基础
    LeetCode 第 151 场周赛
    LeetCode 第 149 场周赛
    LeetCode 第 150 场周赛
    【解决方案】SpringCloud项目优雅发版、部署
    NAT(地址转换技术)学习
  • 原文地址:https://www.cnblogs.com/lyt0207/p/12522298.html
Copyright © 2011-2022 走看看