说明:

Fibonacci为1200年代的欧洲数学家,在他的著作中曾经提到:若有一只免子每个月生一只小免子,一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子,三个月后有五只免子(小免子投入生产)......。 如果不太理解这个例子的话,举个图就知道了,注意新生的小免子需一个月成长期才会投入生产,类似的道理也可以用于植物的生长,这就是Fibonacci数列,一般习惯称之为费氏数列,例如以下: 1、1 、2、3、5、8、13、21、34、55、89......

分析:

如果单从数学上找费氏数列的规律时,很容易发现当n>=2时,f(n)=f(n-1)+f(n-2)。但是如果从逻辑上分析,为什么会有这个规律呢?其实很简单,由于第n个月的兔子=上一个月的兔子数量+这个月新出生的兔子数量。上一个月的兔子的数量为f(n-1),那这个月新生出的兔子数量是多少呢,那就是上上个月的兔子的数量,因为只有在上上个月就已经存在的兔子,这个月才能生兔子,因此新出生的兔子的数量就是f(n-2)。

实现:

/****************************************************************Name: GossipAlgorithm.cDescription: the problem is a classical recursion problemAuthor: fuchencong@163.comTime: 2014-9-12
****************************************************************/#include <stdio.h>const int MAX_SIZE=20;int main(){int arrayGossip[MAX_SIZE]; arrayGossip[0]=0; /** the first element of array is 0 */arrayGossip[1]=1;for(int i=2;i<MAX_SIZE;i++){arrayGossip[i]=arrayGossip[i-1]+arrayGossip[i-2];}for(int i=0;i<MAX_SIZE;i++){printf("%d\n",arrayGossip[i]);}return 0; }

总结:

费氏数列从数学上很容易找出它的规律,但是如果要从逻辑上理解,就得稍微思考一下了。

经典算法详解(2):费氏数列相关推荐

  1. 经典算法详解--CART分类决策树、回归树和模型树

    Classification And Regression Tree(CART)是一种很重要的机器学习算法,既可以用于创建分类树(Classification Tree),也可以用于创建回归树(Reg ...

  2. 机器学习经典算法详解及Python实现--元算法、AdaBoost

    http://blog.csdn.net/suipingsp/article/details/41822313 第一节,元算法略述 遇到罕见病例时,医院会组织专家团进行临床会诊共同分析病例以判定结果. ...

  3. 机器学习10大经典算法详解

    "数据+算法=模型". 面对具体的问题,选择切合问题的模型进行求解十分重要.有经验的数据科学家根据日常算法的积累,往往能在最短时间内选择更适合该问题的算法,因此构建的模型往往更准确 ...

  4. 经典算法详解 之 递归算法

    递归算法:递归算法是把问题转化为规模缩小了的同类问题的子问题.然后递归调用函数(或过程)来表示问题的解. 递归算法是算法设计中比较常用的一种算法,它的优点在于考虑问题的角度不再局限于过程,而是从整体的 ...

  5. 算法详解 - 神奇的兔子数列

    14天阅读挑战赛 *努力是为了不平庸~ 算法知识点 递归.斐波那契数列 算法题目来源 异步社区 算法题目描述 假设第一个月有一对初生的兔子,第2个月进入成熟期,第三个月进行生育兔子,而一对成熟的 兔子 ...

  6. 经典算法详解(8)数的分组

    题目:有10个任意的正整数,将其分为两组A和B,要求组A中每个数据的和与组B中每个数据的和之差的绝对值最小.请设计算法实现数的分组(找出一个答案即可). C++版本: 1 #include<io ...

  7. 起名算法 php,PHP实现各种经典算法详解

    //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($array, ...

  8. 经典算法详解(2)寻找数组中的次大数

    题目:10个互不相等的整数,求其中的第2大的数字,要求数组不能用排序,设计的算法效率越高越好. 1 #include<iostream> 2 3 using namespace std; ...

  9. sporadic偶发实时任务多核分区动态优先级EDF(或者DM)调度(以及可调度性分析)经典算法详解

    sporadic任务的概念:实时任务分类与术语_标biao的博客-CSDN博客,也就是任务的截止期可以小于周期. with no loss of generality,任务集为封闭任务集,不会运行时动 ...

  10. 经典算法详解(10)图中有多少个三角形

    题目:请说出下面图形中包含多少个三角形?请用一个程序完成计算. C++版本 1 #include<iostream> 2 3 using namespace std; 4 5 const ...

最新文章

  1. PyQt5 技术篇 - 按钮隐藏并保留位置,pyqt5设置按钮的可见度,设置按钮透明度
  2. 社区首款 OAM 可视化平台发布!关注点分离、用户友好、上手难度低
  3. 全栈、均栈、MERN栈,哪个才是下一代Web项目的正确栈
  4. 跟着邓神 3 天掌握 Go 语言基础(免费)
  5. go 判断channel是否关闭
  6. WPF 实现音频播放动画控件
  7. 【JS 逆向百例】无限 debugger 绕过,某网站互动数据逆向
  8. 如何在ASP.NET Core中编写自定义日志记录提供程序
  9. 【Vue2.0】—Vue中的key有什么作用?(四)
  10. 常用文件格式转换大全: PDF转Word,WORD转PDF转换器,DOCX转DOC转换
  11. android指定分享到qq,Android使用系统分享文件给微信,QQ指定的用户
  12. Java爬虫,数据采集经验分享
  13. Message类的Msg属性所关联的所有ID
  14. 德国《世界报》:在上海车牌与小汽车一样贵
  15. oracle SO币种默认设置,Oracle EBS 11i 表结构——OE模块 so_headers_all;so_lines_all
  16. EDA程序设计--计时器设计
  17. 《清单革命》的读后感优秀范文3900字
  18. Java NIO三大核心之缓冲区Buffer概述
  19. 【小知识】linux下ls与ll的区别
  20. 英特尔xmm6321平台camera闪光灯相关记录

热门文章

  1. 计算机课做名片怎么做,第7课制作个人小名片(教学设计)
  2. 最少承诺原则和单一职责原则_单一责任原则
  3. 单细胞测序最新研究进展(2021年7月)
  4. 局域网考勤python_Python3.7实现中控考勤机自动连接
  5. ROS实战(二) 科大讯飞语音合成模块
  6. win10计算机 需要新应用,win10 计算器提示:需要新应用打开此calculator
  7. 亦真亦幻,A股区块链板块含金量几何?
  8. chrome 浏览器 FungLeo 常用插件汇总
  9. 看红帽巨佬解析⭐《二、G1垃圾回收配置解析》⭐
  10. Maven子父工程依赖配置,小白也能看得懂