兔子生兔子之递归问题(递归实现斐波那契数列)
今天给大家带来一个经典题,斐波那契数列,题目如下:
//题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,//小兔子长到第三个月后每个月又生一对兔子。假如兔子都不死,要求根据输入的月份输出对应兔子的个数//解题思路: 月 份 :1 2 3 4 5 6 7 8 9// 兔子数 :1 1 2 3 5 8 13 21 34// 上方可以看出,是有规律可循的,第n个数 == n-1 + n-2;//共2种实现方式,首先展示第一种,利用数组实现Scanner sca = new Scanner(System.in);System.out.println("请输入您要查看的月数:");int month = sca.nextInt();int[] num = new int[month];//前两位是固定值,设置固定值num[0] = 1;num[1] = 1;for (int i = 2; i < num.length; i++) {num[i] = num[i-1] + num[i-2];}System.out.println(month + "月兔子共有:" + num[month-1] + "对");//第二种方式,利用递归实现,递归原理:假设输入的是5,从5开始依次往下走,再返回来,最后返回结果,类似于循环,但不是循环int num2 = fbnqRabbit(month);System.out.println("第" + month + "个月的兔子数:" + num2 + "只");}/*** 递归实现兔子生兔子(斐波那契数列)* @param month 输入的月份* @return 返回month对应的兔子对儿数*/public static int fbnqRabbit(int month) {//如果到了1或2直接返回1if (month == 1 || month == 2) {return 1;}//返回每次计算值,在本方法内完成,最后返回month月份对应的数return fbnqRabbit(month - 1) + fbnqRabbit(month - 2);}
递归实现会有一个问题,输入50以上的数字就不能输出结果了,就算能够输出,也是非常非常慢,使用递归实现该问题如果输入数字过大可能会导致栈内存溢出,为了解决这个问题,利用数组实现,也是不错的选择,数组实现的原理,也是先将数据复制到数组内,然后输入1000不是问题,测试通过。
制作不易,望各位多多支持!!
兔子生兔子之递归问题(递归实现斐波那契数列)相关推荐
- 递归经典应用之斐波那契数列
递归经典应用之斐波那契数列 (一)递归概念 将复杂问题 递推分解为最简问题 然后将结果回归的过程 Windows - Linux Linux = Linux is not Unix 使用方法: 自己调 ...
- [python]练习之递归和循环实现斐波拉契数列
1 # 程序功能:用递归和循环实现斐波拉契数列 2 # 0 1 1 2 3 5 8 13 21 34 3 4 def digui_fibo(number): 5 if number == 1: 6 r ...
- C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)
本节主要说了递归的设计和算法实现,以及递归的基本例程斐波拉契数列.strlen的递归解法.汉诺塔和全排列递归算法. 一.递归的设计和实现 1.递归从实质上是一种数学的解决问题的思维,是一种分而治之的思 ...
- 笔试题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。该题有三种解法:递归的方法求解斐波那契数列、用概率与统计的数学方法解决,3.动态规划
笔试题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法.该题有三种解法:1.递归的方法求解斐波那契数列.2.用概率与统计的数学方法解决,3.动态规划 ...
- 利用递归、迭代解决斐波那契数列问题与汉诺塔难题
有人说,"普通程序员使用迭代,天才程序员使用递归",真是这样吗? 1.浅谈递归与迭代 <1>递归的基本概念: 程序调用自身的编程技巧称为递归,是函数自己调用自己. 一个 ...
- Python 算法之递归与尾递归,斐波那契数列以及汉诺塔的实现
文章目录 递归概念 递归要素 递归与迭代的区别 示例一:阶乘 示例二:斐波那契数列 示例三:汉诺塔问题 尾递归 Python 中尾递归的解决方案 递归概念 递归:程序调用自身的编程技巧称为递归( re ...
- c语言斐波那契数列递归数组,c语言斐波那契数列递归法
斐波那契数列递归 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为&quo ...
- 数据结构与算法--再谈递归与循环(斐波那契数列)
再谈递归与循环 在某些算法中,可能需要重复计算相同的问题,通常我们可以选择用递归或者循环两种方法.递归是一个函数内部的调用这个函数自身.循环则是通过设置计算的初始值以及终止条件,在一个范围内重复运算. ...
- python斐波那契数列前20项_兔子繁殖问题带来的智商碾压:斐波那契数列趣谈
本文来自公众号:超级数学建模 微信号 :supermodeling 原文标题:斐波那契数列趣谈 via 善科 by BB 一般认为斐波那契数列的提出是基于兔子的繁殖问题:如果一开始有一对兔子,它们每月 ...
- 递归法 最大公倍数 斐波那契数列 数组插入排序改递归
辗转相除法: 例如:m%n=0;能够整除则n为最大公倍数 若m%n=k,不能够整除的话,继续辗转相除变为n%k 若n%k=c,不能整除的话继续这样- 核心代码 static int gcd(int m ...
最新文章
- 算术运算中隐式类型转换
- 访问手机app怎么看路径_推荐一款手机看国内电视的app
- Linux系统的启动过程
- 【jzoj】2018.2.3NOIP普及组——D组模拟赛
- .net core 学习小结之 JWT 认证授权
- layui获取input信息_python爬虫—用selenium爬取京东商品信息
- 编译用于高放射性环境的应用程序
- Altium Designer(二):规则设置
- 可道云 docker 群晖_利用群晖NAS同步文献
- MySQL的索引失效问题
- javascript函数传参
- 显卡排行榜天梯图2022 显卡性能天梯图2022
- 联想服务器linux系统raid驱动,ThinkSystem服务器RAID 530/930系列阵列卡驱动及安装RHEL7.3要点说明...
- 销售的几种层次-销售笔记
- html utf 8编码转换器,utf8和gb2312编码在线转换工具
- (完美可行)小米设备一键激活XPOSED框架方法
- css 文本超出2行就隐藏并且显示省略号
- 小学计算机小组兴趣活动计划,计算机兴趣小组活动计划
- Andriod Scroller使用小结
- ipynb转py命令
热门文章
- About Intellij IDEA
- 偏相关系数 计算机,简单相关系数
- vsan虚拟化和共享存储服务器,1.1 vSAN入门及数据存储
- Chip天线(WiFi/蓝牙陶瓷芯片天线) 选型
- Jenkins+Jmeter、jmeter脚本执行执行失败,jenkins构建成功
- linux开启启动服务的顺序,SUSE服务启动顺序
- win7计算机里桌面菜单没有反应,win7系统鼠标右键点击桌面没反应怎么办 鼠标右键没反应解决方法...
- 客户端Git代码的下载与提交
- 测试联通移动信号软件,联通VS移动:4G速度实测对比
- 自动发送寄件通知教程