c语言斐波那契数列_Day 7:斐波那契数列
![](/assets/blank.gif)
剑指Offer_编程题——斐波那契数列
题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39
具体要求:
时间限制: C/C++ 1秒,其他语言2秒
空间限制: C/C++32M,其他语言64M
具体思路:
概念介绍
斐波那契数列是一个很经典的问题,大多学计算机的都知道,它是由著名数学家列昂纳多·斐波那契而命名的。它也称之为黄金分割数列。它的由来是从兔子的繁殖而引进来的,因此也称之为“兔子数列”。从第三项起,前两项之和即为第三项,其通项为F(n) = F(n - 1)+ F(n - 2).例如:这样的一个数列:1 1 2 3 5 8 13 21 34……就是斐波那契数列。
实现思路
实现斐波那契数列需要进行经典的算法——递归。但是递归也是有技巧,如果我们只是单纯的进行递归,不进行任何的优化,则时间和空间复杂度为指数级别的,随着n的不断增长,时间的消耗和空间呈爆炸型增长。因此即使我们用递归也要对通项进行优化。其实在计算过程中,我们不难发现,前两项这和为第三项,之所以直接递归有那么大的复杂度,是因为它每计算新的一项,总会重复计算前一项,因此,我们只需要定义一个新的变量来保存这个之前计算好的值,时间和空间复杂度就降下来了。
我们分别用java和python来实现这个思路。
1、我们首先用java来实现这个代码
public
代码效果图如图所示:
![](/assets/blank.gif)
2、我们用Python来实现
class
其效果图如图所示:
![](/assets/blank.gif)
我们可以通过改善一下以上的代码,适当的缩减代码的运行时间复杂度,当然,空间就比之前的要占用多了,这就是典型的“以空间换时间”的思想。具体改进代码如下:
class
其效果图如图所示:
![](/assets/blank.gif)
与上面的代码相比较,只是优化了一行代码,时间复杂度确降低了接近一半,当然与之对应的空间就扩大了将近一倍。
总结
本道题通过一个典型的斐波那契数列问题来考察我们对递归的应用,因此在做该题之前,我们应该了解斐波那契数列,其次要熟练掌握递归思想。在最后我们运用了常见的“以空间换时间”的思想来改进了算法,其效果很明显。继续加油,争取早日找到工作,Good Luck!!!
c语言斐波那契数列_Day 7:斐波那契数列相关推荐
- c++调用cplex求解例子_递归算法的R语言实现 (罗汉塔、九连环、斐波那契数列等问题的求解)...
递归算法用函数来实现,通俗地说就是函数对自身的调用,求解递归问题就转化为函数的调用关系问题.函数f(n)随自变量n的增加而变化,函数的调用关系也就表现为f(n)与f(n-1)或f(n-2)关系的问题. ...
- c语言输出斐波那契数列pta,从斐波那契数列说起
这段时间在看算法相关的一些东西: 因为算法不好连笔试都过不了(哭,其实算法不仅仅是为了笔试面试,更是为了日后在工作中提高软件的运行效率.这让我联想到了前不久看过的一篇文章:李开复:算法的力量 以前没有 ...
- C语言递归算法求斐波那契,递归法求斐波那契数列(C语言版)
斐波那契数列: 又称黄金分割数列,指的是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... 在数学上,斐波纳契数列以如下被以递归的方法定义 ...
- python查询斐波那契数列通项公式_斐波那契数列求解总结(Python版)
最近在查阅斐波那契数列时,看到下面的文章,总结得非常好,于是自己上手使用 Python 练习并实现多种求解方法 守望:面试官问你斐波那契数列的时候不要高兴得太早zhuanlan.zhihu.com ...
- JAVA中打印斐波拉契数列_java打印斐波那契数列
每行 5 个,输出斐波那契数列的前 20 个数字 6. 编写程序接受用户输入一个... 3 ? 这一公式输出斐波那契数列中的前 40 个数. 保存文件名为:bnds11.java class bnds ...
- C语言DP备忘计算指数N的斐波那契级数的算法(附完整源码)
C语言DP备忘计算指数N的斐波那契级数的算法 C语言DP备忘计算指数N的斐波那契级数的算法完整源码(定义,实现,main函数测试) C语言DP备忘计算指数N的斐波那契级数的算法完整源码(定义,实现,m ...
- python查询斐波那契数列通项公式_分享一个神奇的操作系统——斐波那契+MACD,每一波都有20%以上的收益!...
斐波那契数列,又称兔子数列,或者黄金分割数列.指的是这样一个数列: 0.1.1.2.3.5.8.13.21--从第三项起,它的每一项都等于前两项的和. 为什么是兔子数列?我们假设兔子在出生两个月后,就 ...
- python程序题斐波那契数列通项公式,Python斐波那契数列应用,编程练习题实例六...
python斐波那契数列,本文是关于Python编程练习题和答案实例六,斐波那契数列应用的示例.引用百度关于斐波那契数列的介绍,大家先简单来的了解下,什么是斐波那契数列? 斐波那契数列(Fibonac ...
- 波菲那契数列公式_斐波那契数列为什么那么重要,所有关于数学的书几乎都会提到?...
一句话先回答问题:因为斐波那契数列在数学和生活以及自然界中都非常有用. 下面我就尽我所能,讲述一下斐波那契数列. 一.起源和定义 斐波那契数列最早被提出是印度数学家Gopala,他在研究箱子包装物件长 ...
- 著名数列及其算法(斐波拉契)
1.斐波那契数列 2.帕多瓦数列 3.卡特兰数 4.Look-and-say 数列 5.递推数列 – – 1.斐波那契数列 斐波那契数列,又称黄金分割数列.因数学家列昂纳多·斐波那契以兔子繁殖为例子而 ...
最新文章
- ubuntu14.04 升级gcc的方法
- 听说你想去大厂看学妹,带你看看作业帮产品经理岗面经
- 开发函数计算的正确姿势——运行 Selenium Java
- 戴尔服务器装新硬盘模式,DELL服务器配置RAID及安装ESXI
- suse 内核编译安装_升级SUSE Linux内核的完整步骤!
- POM.xml红叉解决方法
- 关于字符串截取的函数
- JavaScript比较两个数组的内容是否相同
- 首提“智能X效应”,英特尔携手产业加速智能变革
- sql---如何把sql查询出来的结果当做另一个sql的条件查询,1、语句2、with as
- 《C#图解教程》读书笔记之五:委托和事件
- 华三交换机配置access命令_H3C交换机配置命令大全讲解
- 小白软件帮手(xbrjbs)一个专业安装破解软件的公众号
- IP地址与DNS的作用,什么是IP地址与DNS【详细】
- xheditor编辑器的使用
- 如果我恨一个人,我就领他到中关村买相机。
- Delayed Adversarial Training with Non-Sequential Adversarial Epochs
- 乐理基础-和弦、调式
- UKF-MATLAB实现
- openEuler操作系统的安装