• 【剑指offer】07 斐波那契数列


    题目地址:斐波那契数列

    题目描述                                   

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

    n39

    时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 64M,其他语言128M

    题目示例                                   

    输入:
    4
    返回值:
    3

    解法分析                                   

    在学递归的时候,斐波那契数列可谓最佳例子,除去n=0&n=1的情况return Fibonacci(n-1)+Fibonacci(n-2)就完事了,但是递归虽简单但有缺点,就是速度感人,时间复杂度为O(2^n),同时n过大时容易溢出,因此我们可以找一找更优解。

    如果我们利用数组和for循环,可以大大减少递归方法中的重复计算,时间复杂度降至O(n)。

    或者单纯利用循环,时间复杂度同样为O(n)。

    代码                                         

    数组+循环:

     1 function Fibonacci(n)
     2 {
     3     // write code here
     4     if(n<=1){
     5         return n;
     6     }else{
     7         var fib = [];
     8         fib[0] = 0;
     9         fib[1] = 1;
    10         for(var i=2;i<=n;i++){
    11             fib[i]=fib[i-2]+fib[i-1];
    12         }
    13         return fib[n];
    14     }
    15 }

    循环:

     1 function Fibonacci(n)
     2 {
     3     // write code here
     4     var res = 0, mid = 1;
     5     while(n--){
     6         mid+=res;
     7         res=mid-res;
     8     }
     9     return res;
    10 }

    执行结果                                   

     
     
  • 相关阅读:
    安全性测试的测试点
    Python基础,,小题目
    Python画小猪佩奇
    Python代码
    Python画圆
    python编写贪吃蛇游戏
    主键、外键的作用,索引的优点与不足
    LoadRunner分为哪三个模块?请简述各模块的主要功能。
    测试结束的标准
    坚持“5W”规则,明确内容与过程
  • 原文地址:https://www.cnblogs.com/sunlinan/p/14206581.html
Copyright © 2020-2023  润新知