C语言递归解兔子繁衍问题
兔子繁衍问题
- 提出问题
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 简单分析
设要计算的月份(m)(m)(m)兔子总数为 (P[m])(P[m])(P[m]),往前推一个月的兔子总数为 (P[m−1])(P[m-1])(P[m−1]),同理往前推三个月的兔子总数为 (P[m−3])(P[m-3])(P[m−3]),
由于一对兔子就能生一对兔子,也就是说能生产的兔子总数和他们生下来的兔子总数是相等的,小兔子又有三个月缓冲期,就可以理解为:当月的兔子总数等于前一个月的总数加上新生兔子数,新生兔子数又等于前三个月的兔子总数。
故:P[m]=P[m−1]+P[m−3]P[m] = P[m-1] + P[m-3]P[m]=P[m−1]+P[m−3];
此类结果有递推性的,都可以使用递归的方法求解。
提示:以下是使用递归方法求解兔子繁衍问题的代码,下面案例可供参考
一、c语言实现
代码如下(示例):
int main()
{int month,rstrab=0;while(1){printf("输入月份:");scanf("%d",&month);while(getchar()!='\n');if(month<1){printf("输入错误!\n");}else{rstrab=rabbit(month);printf("第 %d 月兔子总数为: %d 只\n",month,rstrab);}}return 0;
}int rabbit(int month)
{int sumRab;if(month <= 3){sumRab = 2;return sumRab;}else{sumRab = rabbit(month-3)+rabbit(month-1);return sumRab;}
}
二、运行结果
输入月份:1
第 1 月兔子总数为: 2 只
输入月份:3
第 3 月兔子总数为: 2 只
输入月份:4
第 4 月兔子总数为: 4 只
输入月份:5
第 5 月兔子总数为: 6 只
输入月份:6
第 6 月兔子总数为: 8 只
输入月份:7
第 7 月兔子总数为: 12 只
输入月份:8
第 8 月兔子总数为: 18 只
输入月份:9
第 9 月兔子总数为: 26 只
输入月份:10
第 10 月兔子总数为: 38 只
输入月份:11
第 11 月兔子总数为: 56 只
总结
>使用递归方法求解能递推的问题是十分方便,虽然能求出结果,但是其算法效率极其低,同样的问题是可以通过循环的方式求解的,故实现过程仅供参考。
C语言递归解兔子繁衍问题相关推荐
- 18.12.09-C语言练习:兔子繁衍问题 / Fibonacci 数列
题目: 问题解析: 这是典型的/Fibonacci 数列问题.具体这里不赘述. 问题中不论是初始的第1对兔子还是以后出生的小兔子都是从第3个月龄起每个月各生一对兔子. 设n1,n2,n3分别是每个月1 ...
- c语言兔子繁衍问题递归,一对
参考文献:https://spring.io/blog/2018/09/24/spring-data-jdbc-references-and-aggregates 1.多对多关系处理 场景介绍:一个人 ...
- 兔子繁衍问题--C语言
兔子繁衍问题--C语言 问题提出 一对兔子,从出生后第三个月起每个月都生一对兔子.小兔子长到第三个月后每个月又生一对兔子.假如兔子都不死,请问第一个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才 ...
- C语言 兔子繁衍问题
兔子繁衍问题 问题描述: 一对兔子,从出生后第3个月起每个月都生一对兔子.小兔子长到第3个月后每个月又生一对兔子.假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到 ...
- 习题4-11 兔子繁衍问题 | 浙大版《C语言程序设计(第3版)》题目集
习题4-11 兔子繁衍问题 一对兔子,从出生后第3个月起每个月都生一对兔子.小兔子长到第3个月后每个月又生一对兔子.假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达 ...
- Drools 规则语言详解(上)
http://www.blogjava.net/guangnian0412/archive/2006/06/09/51574.html http://www.blogjava.net/guangnia ...
- c语言递归汉诺塔次数,c语言递归解决汉诺塔参数变化的疑惑
c语言递归解决汉诺塔参数变化的疑惑 答案:3 信息版本:手机版 解决时间 2020-04-05 14:20 已解决 2020-04-05 10:49 #include void main() {vo ...
- matlab兔子繁殖问题,斐波那契数列在《疯狂动物城》兔子繁衍中的应用
摘 要: 计算思维的构建有助于帮助学生将实际问题转换为透明易懂的框架算法, 并借助计算机解决.以电影<疯狂动物城>中的兔子繁殖问题为例, 引出斐波那契数列, 引导学生将数学表达式转化 ...
- PTA习题4-11 兔子繁衍问题 (15 分)-好容易入坑
综述: 刷了40多道题,论最坑爹的一道题我认为非兔子繁衍莫属,我刷这道题花了一整个下午,自认为我是对的,但是上传到PTA总是部分正确,最后屈服了在网上搜了下,最后终于发现问题:就是如何才算3个月,我所 ...
- 兔子繁衍问题(PTA)
兔子繁衍问题 题目描述 一对兔子,从出生后第3个月起每个月都生一对兔子.小兔子长到第3个月后每个月又生一对兔子.假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N ...
最新文章
- 《HFSS电磁仿真设计从入门到精通》一第2章 入门实例——T形波导的内场分析和优化设计...
- Unity UGUI —— 无限循环List(转载)
- 如何把配置文件集成到.exe中_VSCode如何使用cmder
- opencv3—— cv::putText()
- text type dropdown list - INIT_DATA
- 双数组trie树的基本构造及简单优化
- Leetcode每日一题:面试题17.10.find-majority-element-lcci(主要元素)
- 总结《An Introduction to Ray Tracing》
- Android基本界面控件六-进度条
- 三星投8万亿扩充10nm、7nm产能:骁龙835爆发
- centos7连接华为san存储_centos7配置nfs共享存储服务
- spring boot设置http https端口
- C语言知识点——函数参数
- 自定义android tv播放器,具有可自定义实时广播源的Android TV手机播放器
- 永远不要把自己置于一种不得不失去颜面而后退,同时不得不冒险而前进的境地。
- RTSP协议视频安防综合管理平台EasyNVR与海康萤石云平台运行机制差异对比说明
- Plant Simulation 更改字体样式
- 关于计算机的手抄报知识,电子手抄报
- 计算机器点游戏,24游戏计算器
- 信号完整性之浅谈理解(七)
热门文章
- python turtle 乌龟赛跑_海龟快跑,turtle碰撞检测小游戏
- 学生管理数据库,及相关查询
- 浅论程序员的工作经历与工作经验
- sklearn.metrics.accuracy_score/precision_score/recall_score、micro/macro/weighted(准确率、召回率)
- 生物信息学|通过整合药物表型、治疗、化学结构和基因组特征,使用机器学习预测药物-药物相互作用
- 采用生产者消费者模式爬取毛豆新车网
- [转]关于Gmail打不开的解决办法
- Tallest buildings/skyscrapers in the world
- 2021.09青少年软件编程(Python)等级考试试卷(五级)
- php-redis常用操作