经典算法详解(2):费氏数列
说明:
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):费氏数列相关推荐
- 经典算法详解--CART分类决策树、回归树和模型树
Classification And Regression Tree(CART)是一种很重要的机器学习算法,既可以用于创建分类树(Classification Tree),也可以用于创建回归树(Reg ...
- 机器学习经典算法详解及Python实现--元算法、AdaBoost
http://blog.csdn.net/suipingsp/article/details/41822313 第一节,元算法略述 遇到罕见病例时,医院会组织专家团进行临床会诊共同分析病例以判定结果. ...
- 机器学习10大经典算法详解
"数据+算法=模型". 面对具体的问题,选择切合问题的模型进行求解十分重要.有经验的数据科学家根据日常算法的积累,往往能在最短时间内选择更适合该问题的算法,因此构建的模型往往更准确 ...
- 经典算法详解 之 递归算法
递归算法:递归算法是把问题转化为规模缩小了的同类问题的子问题.然后递归调用函数(或过程)来表示问题的解. 递归算法是算法设计中比较常用的一种算法,它的优点在于考虑问题的角度不再局限于过程,而是从整体的 ...
- 算法详解 - 神奇的兔子数列
14天阅读挑战赛 *努力是为了不平庸~ 算法知识点 递归.斐波那契数列 算法题目来源 异步社区 算法题目描述 假设第一个月有一对初生的兔子,第2个月进入成熟期,第三个月进行生育兔子,而一对成熟的 兔子 ...
- 经典算法详解(8)数的分组
题目:有10个任意的正整数,将其分为两组A和B,要求组A中每个数据的和与组B中每个数据的和之差的绝对值最小.请设计算法实现数的分组(找出一个答案即可). C++版本: 1 #include<io ...
- 起名算法 php,PHP实现各种经典算法详解
//-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($array, ...
- 经典算法详解(2)寻找数组中的次大数
题目:10个互不相等的整数,求其中的第2大的数字,要求数组不能用排序,设计的算法效率越高越好. 1 #include<iostream> 2 3 using namespace std; ...
- sporadic偶发实时任务多核分区动态优先级EDF(或者DM)调度(以及可调度性分析)经典算法详解
sporadic任务的概念:实时任务分类与术语_标biao的博客-CSDN博客,也就是任务的截止期可以小于周期. with no loss of generality,任务集为封闭任务集,不会运行时动 ...
- 经典算法详解(10)图中有多少个三角形
题目:请说出下面图形中包含多少个三角形?请用一个程序完成计算. C++版本 1 #include<iostream> 2 3 using namespace std; 4 5 const ...
最新文章
- PyQt5 技术篇 - 按钮隐藏并保留位置,pyqt5设置按钮的可见度,设置按钮透明度
- 社区首款 OAM 可视化平台发布!关注点分离、用户友好、上手难度低
- 全栈、均栈、MERN栈,哪个才是下一代Web项目的正确栈
- 跟着邓神 3 天掌握 Go 语言基础(免费)
- go 判断channel是否关闭
- WPF 实现音频播放动画控件
- 【JS 逆向百例】无限 debugger 绕过,某网站互动数据逆向
- 如何在ASP.NET Core中编写自定义日志记录提供程序
- 【Vue2.0】—Vue中的key有什么作用?(四)
- 常用文件格式转换大全: PDF转Word,WORD转PDF转换器,DOCX转DOC转换
- android指定分享到qq,Android使用系统分享文件给微信,QQ指定的用户
- Java爬虫,数据采集经验分享
- Message类的Msg属性所关联的所有ID
- 德国《世界报》:在上海车牌与小汽车一样贵
- oracle SO币种默认设置,Oracle EBS 11i 表结构——OE模块 so_headers_all;so_lines_all
- EDA程序设计--计时器设计
- 《清单革命》的读后感优秀范文3900字
- Java NIO三大核心之缓冲区Buffer概述
- 【小知识】linux下ls与ll的区别
- 英特尔xmm6321平台camera闪光灯相关记录
热门文章
- 计算机课做名片怎么做,第7课制作个人小名片(教学设计)
- 最少承诺原则和单一职责原则_单一责任原则
- 单细胞测序最新研究进展(2021年7月)
- 局域网考勤python_Python3.7实现中控考勤机自动连接
- ROS实战(二) 科大讯飞语音合成模块
- win10计算机 需要新应用,win10 计算器提示:需要新应用打开此calculator
- 亦真亦幻,A股区块链板块含金量几何?
- chrome 浏览器 FungLeo 常用插件汇总
- 看红帽巨佬解析⭐《二、G1垃圾回收配置解析》⭐
- Maven子父工程依赖配置,小白也能看得懂