30.斐波那契数列

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

题目描述

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


n<=39


解法1:递归


缺点:需要保存中间重复参数,运算量大


class Solution {

public:

   int Fibonacci(int n)

   {

     if(n<=0)

      return 0;

     if(n==1)

      return 1;

    return  Fibonacci(n-1) +Fibonacci(n-2);

   }

};

不通过:


运行超时:您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。

case通过率为0.00%


缺点是:

7b252cc49eddde2620d6401c28300ec0_20190207222122263.png



需要计算很多的重复参数,例如上面涂颜色部分。


解法2:迭代  (递推)


O(n)的时间复杂度


class Solution {

public:

   int Fibonacci(int n)

   {

       int result[2]={0,1};

       int fibNMinusOne=1;

       int fibNMinusTwo=0;

       int fibN=0;

       if(n<2)

       {

           return result[n];

       }

       for(unsigned int i=2;i<=n;++i)

       {

           fibN=fibNMinusOne+fibNMinusTwo;

           fibNMinusTwo=fibNMinusOne;//上上次的fibN值

           fibNMinusOne=fibN;//上次的fibN值

       }

      return  fibN;

   }

};

类似动态规划?:


class Solution {

public:

   int Fibonacci(int n)

   {

       //vector<int> result[n+1];//vector 新建数组出错

       int * result=new int[n+1];//新建数组

       result[0]= 0;

       result[1]= 1;

       if(n<2)

       {

           return  result[n];

         

       }

       for(unsigned int i=2;i<=n;++i)

       {

         result[i]=result[i-1]+result[i-2];

       }

      return result[n];

   }

};

解法3: 待完善

O(logn)时间复杂度  涉及矩阵乘法

6db949762c79d9ce3b9d03d4c12a6608_20190207224954997.png


目录
相关文章
|
存储 数据采集 数据可视化
用Python分析西安景点,告诉你哪些景点性价比高
清明马上就要到了,难得的三天假期,祭祖的同时,踏青游玩也是少不了的,但是去哪里玩是一个问题。于是,志斌用Python爬取了去哪儿网上西安景点的相关数据,包括景点名称、城区、热度、价格、月销量等数据,对数据进行可视化并作简单分析,用以找到性价比较高的景点。
879 1
用Python分析西安景点,告诉你哪些景点性价比高
|
1月前
|
人工智能 自然语言处理 语音技术
从“皮囊”到“灵魂”:构建实时交互型数字人的核心技术栈与实践
数字人已从银幕上的炫技特效,逐步走向直播、客服、教育等实时交互场景。作为一名开发者,如何理解并动手构建一个“能听、会说、能思考、有表情”的实时交互数字人?本文将为你拆解其背后的四大核心技术栈,并分享基于阿里云服务的架构实践,助你快速踏入数字人开发的大门。
|
域名解析 存储 网络协议
Linux中搭建主从DNS服务器
搭建主从DNS架构以提升DNS服务的高可用性、负载均衡和数据冗余。主服务器配置涉及编辑`/etc/named.conf`,设置监听IP和允许查询的范围,并定义主区域及允许的数据传输。从服务器配置需指定为奴隶类型,并指明主服务器的IP。测试表明正反向查询解析均正常。注意配置文件的语法正确性和权限设置。
562 0
|
2月前
|
传感器 人工智能 自然语言处理
智能体来了+技术应用迎来爆发期,产业融合催生新机遇
随着AI技术发展,智能体作为连接大模型与实际应用的关键,正推动各行业数字化转型。其具备感知、决策与执行能力,广泛应用于金融、客服、制造等领域,提升效率与服务品质。企业加速布局,人才需求激增,“智能体来了”等平台提供从理论到实战的系统化培养路径,助力个人职业发展与企业智能化升级。未来,智能体将成为技术融合与产业变革的核心驱动力。(237字)
115 10
|
2月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
运维 监控 安全
园区网典型组网架构及案例实践
园区网典型组网架构及案例实践
|
Java Maven Android开发
错误: 找不到或无法加载主类 org.codehaus.plexus.classworlds.launcher.Launcher
错误: 找不到或无法加载主类 org.codehaus.plexus.classworlds.launcher.Launcher
830 0
|
人工智能 运维 供应链
企业IT数字化转型之道 ——端点企业数字化平台(Dice)亮相山东CIO大会
6月22日,由山东CIO联盟主办的“2019山东企业数字化转型大会暨山东CIO年中大会”在山东青岛顺利举办。本次大会,围绕“人工智能+促进企业数字化转型”这一主题展开,共吸引了200多家知名企业参会。 从大数据到快数据时代,企业间的竞争不再只是产品价格、产品易用性等方面的竞争,更多的是对用户需求的把握、业务创新性的竞争。
4788 0
企业IT数字化转型之道 ——端点企业数字化平台(Dice)亮相山东CIO大会
|
移动开发 前端开发 JavaScript
前端开发中web和移动端动画的常见实现方式
前端动画一般在展示性网站、交互操作或者移动端活动页面使用比较多,可能对于大部分前端平时只会用 css 里的 transition 动画,其实前端动画还有很多实现方式