c语言兔子繁殖问题分析和递归方程,经典的兔子生兔子问题(C#递归解法)
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
思路:先求出每个月新增的兔子,再用循环求和即可算出这个月总的兔子数。
月份 新增加兔子
1 1
2 0
3 1
4 1
5 1 + 1
6 1 + 1 + 1
7 (1 + 1 + 1)6月份新增的兔子 + (1 + 1)5月份新增的兔子
... ...
n n - 1月份新增的兔子 + n - 2月份新增的兔子
解法核心:每个月的新增的兔子都在下下个月以及以后的每个月生下一对新兔子,这对新兔子在下下个月以及以后的每个月都会生下一对新兔子,以此规律循环。
因此,只要上个月有新增的兔子后,这个月都会新增和上个月新兔子数量同样的兔子,同时还会新增上上个月兔子数量的新兔子。这两个数量相加就得到这个月一共新增加的兔子。
用递归的方法求出每个月新增的兔子(自定义函数):
static int NewRabbitOfMonth(int n)
{
if(n == 1)
{
return 1;
}
else if(n == 2)
{
return 0;
}
else
{
return NewRabbitOfMonth(n - 1) + NewRabbitOfMonth(n - 2);
}
}
用循环求和的方法求出每个月的兔子总数(主函数):
static void Main(string[] args)
{
Console.Write("请输入第几个月:");
int n = int.Parse(Console.ReadLine());
int sumRabbitOfMonth = 0;
for(int i =1; i <= n; i++)
{
sumRabbitOfMonth += NewRabbitOfMonth(i);
}
Console.Write("第" + n + "个月共有" + sumRabbitOfMonth + "对兔子");
Console.ReadLine();
}
思考:
每个月新增的兔子数量实际上是一个斐波拉契数列:
1,0,1,1,2,3,5...
每个月总的兔子数量也是一个斐波拉契数列:
1,1,2,3,5,8,13...
下面个数列每一项减去上面个数量每一项得到的新数列也是斐波拉契数列:
0,1,1,2,3,5,8...
结论:
一个斐波拉契数量的每一项减去另一个斐波拉契数列的对应每一项得到的新数列也是斐波拉契数列。(待验证)
内容来源于网络如有侵权请私信删除
c语言兔子繁殖问题分析和递归方程,经典的兔子生兔子问题(C#递归解法)相关推荐
- 【C递归和迭代】兔子繁殖问题、青蛙跳台阶问题和汉诺塔问题
⭐博客主页:️CS semi主页 ⭐欢迎关注:点赞收藏+留言 ⭐系列专栏:C语言初阶 ⭐代码仓库:C Advanced 家人们更新不易,你们的点赞和关注对我而言十分重要,友友们麻烦多多点赞+关注,你们 ...
- Java 实现 蓝桥杯 生兔子问题
生兔子问题 有一对兔子,从出生后第四个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子.假如兔子都不死,计算第十个月兔子的总数? 分析: 四个月开始生兔子,则:F(N) = f(n-1) ...
- 生兔子问题(递归思想)
有一对兔子,从出生后第四个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子.假如兔子都不死,计算第十个月兔子的总数? 分析: 四个月开始生兔子,则:F(N) = f(n-1)+ f(n- ...
- 生兔子问题(递归算法)
作业一.有一对兔子,生长三个月后.开始生第一对兔子,并且以后每月生一对兔子,小兔子生长三个月后,也开始生兔子,问N个月后兔子的总数量 package org.westos.homework;impor ...
- C语言/C++常见习题问答集锦(六十四) 之兔子繁殖(递归与非递归)
C语言/C++常见习题问答集锦(六十四) 之兔子繁殖(递归与非递归) 程序之美 1.C语言,计算1乘以3×5*-乘n的积,并输出结果,n值由键盘接收. #include<stdio.h>v ...
- 兔子繁殖问题(斐波那契数列c语言版)
问题描述 兔子繁殖问题是一个经典的c语言问题,其大概内容如下: 著名意大利数学家Fibonacci曾提出一个问题:有一对小兔子,从出生后第3个月起每个月都生一对兔子.小兔子长到第3个月后每个月又生一对 ...
- java兔子繁殖总数_【Java基础编程练习】01:兔子繁殖问题(斐波那契数列)的分析及实现...
01:兔子繁殖问题 Java练习,第一道就是这道题,早有耳闻,看好多答案就是直接摆上来一个斐波那契数列就完了〒▽〒,于是自己就写了一个思考过程,仅供自己将来复习吧~ 一.问题概述 题目:古典问题:有一 ...
- java兔子问题编程思路详解_java语言求解兔子问题代码分析
1.思考 兔子问题,是费氏数列的形象化说法,它是由一位名为Fibonacci的数学家在它的著作中提出的一个问题. 2.描述 它体术的问题是:若有一只免子每个月生一只小免子,一个月后小免子也开始生产.起 ...
- 1055: 兔子繁殖问题 C语言
1055: 兔子繁殖问题 时间限制: 1 Sec 内存限制: 128 MB 提交: 30740 解决: 19451 [状态] [讨论版] [提交] [命题人:admin] 题目描述 这是一个有趣的古典 ...
最新文章
- 5G 信令流程 — 5GC 的注册管理(RM,Registration Management)
- windows平台下caffe可视化配置
- 平稳序列的预测和拟合之模型识别
- 100行代码撸完SpringIOC容器
- insert时出现主键冲突的处理方法【转载】
- DOTNET零碎总结---VB.NET修改数据存在多个txtbox时,SQL语句的操作
- uni-app插入本地背景图片不能超过40kb解决方法
- laravel获取当前的url以及当前的基础域名方法汇总
- SVN创建项目以及检出项目
- centos6.5下编译安装mariadb-10.0.20
- 宝塔界面,添加数据库,数据库管理密码错误!
- 使用Perl5获取有道词典释义
- modbus 调试工具之modbus slave与modbus poll
- MTT预实验与免疫染色准备
- 【复习】物联网导论知识梳理
- Android切词工具——BreakIterator(1)
- 小程序源码:云开发表情包制作神器-多玩法安装简单
- 「分布式系统之美」知乎圆桌精选大放送第二期|不要放过任何你感兴趣的话题
- 7.Mapping详解
- 被误以为外国佬开发的4款国产软件,早年默默无闻,如今声名鹊起