裴波那契数列(循环实现递归)
裴波那契(Fibonacci)数列
f(n)=
\begin{cases} 0, & \text{$n$ =0} \\ 1, & \text{$n$ =1}\\ f(n-1)+f(n-2),&\text{$n$>1} \end{cases}
求裴波那契数列的第n项。(题目来自剑指offer)
1.递归解法,效率很低的解法,不用
一看到这个题,我们就很容易窃喜的想到这种解法
很多f(i)进行了重复计算,随着n的增大,计算量急剧增加,时间复杂度以n的指数方式递增,存在很严重的效率问题。
int Fibonacci(int n) {if(n<=0) return 0;if(n==1) return 1;return Fibonacci(n-1)+Fibonacci(n-2); }
2.用循环实现递归,面试官期待的解法(O(n))
方法1中的递归代码之所以慢是因为重复计算的太多,我们只要想办法避免重复就行了。可以把已经得到的数列中间项保存起来,如果下次需要的时候先查找一下,如果前面已经计算过了就不用再重复计算了。
int Fibonacci(int n) {if(n<=0) return 0;if(n==1) return 1;int a=1;int b=0;int fib=0;for(int i=2;i<=n;i++){fib=a+b;b=a;a=fib;}return fib;}
3.将求裴波那契数列转换成矩阵的乘方
有创意,但代码复杂,不实用
裴波那契数列(循环实现递归)相关推荐
- 裴波那契数列的递归实现与非递归实现
斐波那契数列是数学家列昂纳多·斐波那契(Leonardoda Fibonacci[1] )以兔子繁殖为例子而引入,也称为"兔子数列". 指的是这样一个数列:0.1.1.2.3.5 ...
- 栈的应用(递归:例子裴波那契数列 四则运算表达式求值 :后缀(逆波兰) )
递归: -栈有一个很重要的应用:在程序设计语言中实现递归. 当你往镜子前面一站,镜子里面就有-一个你的像. 但你试过两面镜子一起照吗?如果A.B两面镜子相互面对面放着,你往中间- -站,嘿,两面镜子里 ...
- 裴波那契数列的递归和动态规划算法
裴波那契数列的递归和动态规划算法 一. 概论 通过对裴波那契数列的例子,分析了递归和动态规划算法的本质.并且说明了两种算法的区别. 裴波那契数列:800年前,意大利的数学家斐波纳契出版了惊世之作 ...
- 递归-裴波那契数列(代码、分析、汇编)
目录: 代码: 分析: 汇编: 代码: main.c #include <stdio.h>//该程序输出裴波那契数列 int fibonacci(int n) {if( n > 1 ...
- 裴波那契数列及其递归算法
裴波那契数列起源于兔子数列,假设第一个月有一对刚出生的兔子,第二个月兔子进入成熟期,我三个月开始生育小兔子,而一对成熟的兔子会在每月生育一对小兔子,兔子永远不会死去...n月后会有多少只兔子 每月的兔 ...
- fibonacci斐波那契数列详解 递归求Fn非递归求Fn求n最近的斐波那契数
斐波那契fibonacci 斐波那契额数列即前两项F(0)和F(1)都是1,之后的每一项都是前两项相加和即F(3)=2,F(4)=3,F(5)=5; 通项公式:F(n+2)=F(n+1)+F(n). ...
- 浅谈矩阵加速——以时间复杂度为O(log n)的算法实现裴波那契数列第n项及前n之和使用矩阵加速法的优化求法
首先请连矩阵乘法乘法都还没有了解的同学简单看一下这篇博客: https://blog.csdn.net/weixin_44049566/article/details/88945949 首先直接暴力求 ...
- 汇编:裴波那契数列前50项
汇编:裴波那契数列前50项 DATAS SEGMENTDW 200 DUP(0);一个数字需要64位,DW是16位,一共50个数字DATAS ENDSSTACKS SEGMENTDW 30 DUP(0 ...
- 裴波那契数列python
输出n个长度的裴波那契数列 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1.从第三项开始,每一项都等于前两项之和 def fib ...
最新文章
- PostCSS原理解析
- Android应用连接代理服务器状况监测解决
- java怎么把数据封进对象里_(Java)想把数组中一条一条的数据全部放入对象中去..要怎么做呢...
- StarUML 逆向工程插件加载失败问题解决
- Tax debug and BP number external generation
- matlab的grayscale,Python 是否等效于Matlab函数“imfill”的grayscale??
- 这里聚集了优秀的数学老师、家长,有超多惊喜在等你!
- leecode 题解 || Merge k Sorted Lists 问题
- 计算机配件推荐系统论文摘要,个性化推荐系统设计
- 滑动cell的时候执行动画效果
- keil c语言 位域,联合体位域在keil c遇到的问题怎样解决?
- 关联容器----关联容器概述,关联容器操作,无序容器
- vue element table 修饰
- HUD 2544 最短路 迪杰斯特拉算法
- 可视化动画:数据结构和算法
- 使用 IntraWeb (10) - CSS
- java nginx 重启吗_Nginx的启动、停止、平滑重启
- 白话用consul作为注册中心搭建微服务
- android安装管理,android-使用下载管理器下载后安装apk,并退出...
- 关于《高油压调速器机械液压系统的优化设计》的疑问