有趣的兔子(斐波那契数列)
有趣的兔子(斐波那契数列)
如果每对兔子每月繁殖一对子兔,而子兔在出生后第二个月就有生殖能力,试问一对兔子一年能繁殖多少对兔子?可以这样思考:第一个月后即第二个月时,1对兔子变成了两对兔子,其中一对是它本身,另一对是它生下的幼兔. 第三个月时两对兔子变成了三对,其中一对是最初的一对,另一对是它刚生下来的幼兔,第三对是幼兔长成的大兔子. 第四个月时,三对兔子变成了五对,第五个月时,五对兔子变成了八对,按此方法推算,第六个月是13对兔子,第七个月是21对兔子„„,裴波那契得到一个数列,人们将这个数列前面加上一项1,成为“裴波那契数列”,即:1,1,2,3,5,8,13„.
月份 | 成年兔子数 | 幼年兔子数 | 总数 | 兔子的对数 |
---|---|---|---|---|
1 | 2 | 0 | 2 | 1 |
2 | 2 | 2 | 4 | 2 |
3 | 4 | 2 | 6 | 3 |
4 | 6 | 4 | 10 | 5 |
5 | 10 | 6 | 16 | 8 |
6 | 16 | 10 | 26 | 13 |
7 | 26 | 16 | 42 | 21 |
8 | 42 | 26 | 68 | 34 |
思考:
每个月新增的兔子数量实际上是一个斐波拉契数列:
1,0,1,1,2,3,5…每个月总的兔子数量也是一个斐波拉契数列:
1,1,2,3,5,8,13…
下面个数列每一项减去上面个数量每一项得到的新数列也是斐波拉契数列:
0,1,1,2,3,5,8…
斐波纳契数列:0,1,1,2,3,5,8,13…
这个数列从第3项开始,每一项都等于前两项之和,即:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在许多的学科领域,斐波纳契数列都有直接的应用。
代码块
根据上面的表格可以计算兔子的数量,实现方式一,例如:
// 月份int month = 1;// 兔子的对数int rabbitPair = 1;// 成年兔子数int rabbitAdult = 2;// 幼年兔子数int rabbitInfancy = 0;// 上个月的幼年兔子数int beforeRabbitInfancy = 0;// 兔子的总数int rabbitSum = 0;Console.WriteLine("请输入月份:");int numb = int.Parse(Console.ReadLine());for (; month <= numb; month++){if (month == 1){// 第一个月有1对兔子rabbitPair = 1;// 第一个月有0只幼兔rabbitInfancy = 0;// 上个月的幼兔数量,这里是用于下个月使用的上个月的幼兔数beforeRabbitInfancy = rabbitInfancy;// 成年兔子的数量rabbitAdult = rabbitAdult + beforeRabbitInfancy;// 兔子的总数rabbitSum = rabbitAdult + rabbitInfancy;}else if (month == 2){rabbitPair = 2;rabbitInfancy = 2;rabbitAdult = rabbitAdult + beforeRabbitInfancy;beforeRabbitInfancy = rabbitInfancy;rabbitSum = rabbitAdult + rabbitInfancy;}else if (month == 3){rabbitPair = 3;rabbitInfancy = 2;rabbitAdult = rabbitAdult + beforeRabbitInfancy;beforeRabbitInfancy = rabbitInfancy;rabbitSum = rabbitAdult + rabbitInfancy;}else{// 第4个月开始,幼兔的数量跟上个月成年兔子的数量相等rabbitInfancy = rabbitAdult;// 成年的兔子的数量等于上个月成年的兔子加上上个月的幼兔的数量rabbitAdult = rabbitAdult + beforeRabbitInfancy;// 记录这个月的幼兔数,用于下个月计算beforeRabbitInfancy = rabbitInfancy;// 兔子的总数是成年兔子加幼兔rabbitSum = rabbitAdult + rabbitInfancy;// 兔子的对数rabbitPair = rabbitSum/2;}}Console.WriteLine("{0}月后,有{4}对兔子,兔子的总数是{1}只,成年兔子{2}只,幼年兔子{3}只",numb, rabbitSum,rabbitAdult,rabbitInfancy,rabbitPair);
代码块
根据上面的表格可以计算兔子的数量,实现方式二,例如:
class Program{static void Main(string[] args){while (true){Console.Write("请输入第几个月:");int n = int.Parse(Console.ReadLine());int sumRabbitOfMonth = 0;sumRabbitOfMonth = GetRabbitPair(n);Console.WriteLine("第" + n + "个月共有" + sumRabbitOfMonth + "对兔子");}}private static int GetRabbitPair(int n){if (n==1){return 1;}else if(n==2) {return 2;}else{return GetRabbitPair(n - 1) + GetRabbitPair(n - 2);}}}
有趣的兔子(斐波那契数列)相关推荐
- python斐波那契数列前20项_兔子繁殖问题带来的智商碾压:斐波那契数列趣谈
本文来自公众号:超级数学建模 微信号 :supermodeling 原文标题:斐波那契数列趣谈 via 善科 by BB 一般认为斐波那契数列的提出是基于兔子的繁殖问题:如果一开始有一对兔子,它们每月 ...
- 斐波那契数列不用数组_兔子数列——斐波那契数列
相信人们都对斐波那契数列有或多或少的了解,如果没有,那你一定听过黄金分割比或是见过下面这种图片: 斐波那契生活在十三世纪的意大利,原名列奥纳多·皮萨诺(Leonardo Pisano),他出生在意大利 ...
- OJ1055: 兔子繁殖问题(C语言计算斐波那契数列/“兔子数列”)
题目描述 这是一个有趣的古典数学问题,著名意大利数学家Fibonacci曾提出一个问题:有一对小兔子,从出生后第3个月起每个月都生一对兔子.小兔子长到第3个月后每个月又生一对兔子.按此规律,假设没有兔 ...
- 递归函数输出斐波那契数列-黄金分割数列-兔子数列(python)
递归函数输出斐波那契数列-黄金分割数列-兔子数列(python) 斐波那契数列介绍 数学家莱昂纳 多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔 ...
- 神奇兔子数列:斐波那契数列
假设第1个月有1对刚诞生的兔子,第2个月进入成熟期,第3个月开始生育兔子,而1对成熟的兔子每月会生1对兔子,兔子永不死去--那么,由1对初生兔子开始,12个月后会有多少对兔子呢? 兔子数列即斐波那契数 ...
- 【Python】斐波那契数列之兔子问题
目录 兔子问题 1.1.问题描述 1.2.问题分析 1.3.解决实现 兔子问题 1.1.问题描述 斐波那契在计算之书中,提出了一个有趣的兔子问题: 若一对成年兔子每个月恰好生下一对小兔子,一雌一雄,在 ...
- php算法求出兔子数列,PHP算法:斐波那契数列的N种算法
前言 前段时间,遇到优化计算斐波那契数列的常规递归方法,但是一时间并没有及时想到很好的方法,所以后面查找了相关资料,总结了多种计算解法,所以分享出来,和大家一起交流学习. 斐波那契数是什么 斐波那契数 ...
- 题目1:斐波那契数列(兔子出生规律)
题目: 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序代码: /*** 题目:古典问题:有一对兔子 ...
- python兔子繁殖问题中如何输出相应月份的数列_斐波那契数列介绍及Python中五种方法斐波那契数列...
Q:斐波那契数列为何那么重要,全部关于数学的书几乎都会提到? A:由于斐波那契数列在数学和生活以及天然界中都很是有用.html 1. 斐波那契数列 概念引入 斐波那契数列(Fibonacci sequ ...
最新文章
- MFC 去掉CWnd的边框
- 几款不同颜色LED的伏安特性
- 项目一:第十二天 1、常见权限控制方式 2、基于shiro提供url拦截方式验证权限 3、在realm中授权 5、总结验证权限方式(四种) 6、用户注销7、基于treegrid实现菜单展示...
- oracle对某两列求和再求和_函数实战:多列条件求和
- Java线程start()vs run()方法及示例
- VC++注册,卸载OCX控件,以及判断是否注册
- 团队文化之舒适区和挑战区
- python实践统计学中的三大相关性系数,并绘制相关性分析的热力图
- 【3D点云】数据入门(持续更新)
- 补码1位乘法和补码2位乘法(Booth算法)(三栏式)详解学习
- LabVIEW使用VI Server的时候出现1003错误
- 01- SA8155P QNX LA/LV 启动(01) - startup
- 超强 Python 数据可视化库,一文全解析
- 机器学习:PR曲线及F1 score
- 光电玻璃LED透明屏是黑科技?揭秘玻璃LED透明屏原理
- 如何说宝贝才会听-处理情绪的工具
- Linux临时解决命令行cat命令中文乱码
- Mindjet MindManager 2021中文版注册序列号
- playwright 使用本地chrome 浏览器 加载多个extension 插件
- 学生信息管理系统(C语言版本+源码)