java兔子_JAVA编程题-用java解决兔子问题
题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
解答:
分析:从第一对兔子开始,第1个月1对兔子,由于“长到第三个月后每个月又生一对兔子”,所以第2个月也是1对兔子,第3个月时可以生一对兔子,所以总数为2对,这时,其中有一对是以后每个月都可以生一对兔子的老兔子,另一对是一对新兔子,它只有在第三个月的时候才可以每个月生一对兔子;这样的话,第4个月的兔子总数为3对,…以此类推,从第1个月到第12个月的兔子对总数分别为:1,1,2,3,5,8,13,21,34,55,89,144。。。。。
这是一个典型的斐波那契数列。
由于每对新兔子隔一个月才可以生新一对兔子, 每月的兔子对总数为前两个月的兔子对数之和。
(方法一)利用java编程基本实现,程序设计如下:
代码实现如下:
public class RabbitDemo {
public static void main(String[] args) {
int amount; //每个月的兔子总数
int nAmount = 1; //第一个月的兔子数量
int oAmount = 1; //第二个月的兔子数量
for(int i=1;i<=2;i++){
amount=1;
System.out.println("第" + i + "个月的兔子总是为:" + amount);
}
for(int i=3;i<=12; i++) {
amount = oAmount + nAmount;
oAmount = nAmount;
nAmount = amount;
System.out.println("第" + i + "个月的兔子总是为:" + amount);
}
}
}
(方法二)利用递归的方法来解决斐波那契数列:
代码实现如下:
import java.util.Scanner;
public class RabbitDemo {
public static void main(String[] args) {
System.out.println("输入月份");
Scanner s = new Scanner(System.in);
int month = s.nextInt();
System.out.println("第" + month + "个月的兔子总是为"+getNum(month));
}
public static int getNum(int month){
if(month == 1 || month == 2){
return 1;
}else{
return getNum(month-1)+getNum(month-2);
}
}
}
注意:
如有错误,欢迎指出,共同进步!多多包涵!
java兔子_JAVA编程题-用java解决兔子问题相关推荐
- java解决兔子_JAVA编程题-用java解决兔子问题
题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 解答: 分析:从第一对兔子开始,第1个月1对兔 ...
- java猜字母游戏_JAVA编程题-用java编写猜字母游戏
原标题:JAVA编程题-用java编写猜字母游戏 问题: 猜字母游戏,其游戏规则为: 程序随机产生5个按照一定顺序排列的字符作为猜测的结果,由玩家来猜测此字符串.玩家可以猜测多次,每猜测一次,则由系统 ...
- java编程兔子问题_JAVA编程题-用java解决兔子问题
题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 解答: 分析:从第一对兔子开始,第1个月1对兔 ...
- 剑指offer编程题(JAVA实现)——第35题:数组中的逆序对
github https://github.com/JasonZhangCauc/JZOffer 剑指offer编程题(JAVA实现)--第35题:数组中的逆序对 题目描述 在数组中的两个数字,如果前 ...
- 剑指offer编程题(JAVA实现)——第38题:二叉树的深度
github https://github.com/JasonZhangCauc/JZOffer 剑指offer编程题(JAVA实现)--第38题:二叉树的深度 题目描述 输入一棵二叉树,求该树的深度 ...
- 速学堂(java)第十章编程题答案(自写)
速学堂(java)第十章编程题答案(自写) 1. 实现字节数组和任何基本类型和引用类型执行的相互转换 提示:使用ByteArrayInutStream和ByteArrayOutputStream. p ...
- java集合到线程的考试_成都汇智动力-Java SE考试编程题总结
原标题:成都汇智动力-Java SE考试编程题总结 线程和进程的区别: (1)进程是运行中的程序,拥有自己独立的内存空间和资源; (2)一个进程可以有一个或多个线程组成,且至少有一个线程称为主线程; ...
- java常见笔试编程题(一)
java常见笔试编程题(一) 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串.但是要保证汉字不被截半个,例如"人abc",应该截为"人ab& ...
- JAVA基础入门编程题练习(一)
JAVA基础入门编程题练习(一) 1.设计一个学生类Student和它的一个子类Undergraduate.要求如下: (1) Student类有name和age属性,一个包含两个参数的构造方法,用于 ...
最新文章
- 联邦学习应用思考:需求还是方法?
- 二层交换配置完ping失败_设置完端口聚合之后就ping不通了!!!
- Kettle使用_12 CSV文件仅并发运行与复制数量
- 【quartz】执行一次功能
- 索引unusable|disable|enable
- css属性 background
- 如何计算 string 的 crc32 值 ?
- 《linux核心应用命令速查》连载十一:pstree:显示进程状态树
- 前端CSS - 相对定位,绝对定位,固定定位
- 区块链 以太坊 solidity 事务控制和异常处理 require assert
- mysql姓氏笔画排序_mysql中怎么按姓氏笔画排序
- cashfiesta网上赚钱
- 点击换图 秀米的svg_时隔五年再用秀米,我发现了这个超强玩法。
- 用python计算化学题_(完整版)化学计算题解题方法(含答案)
- 百度地图(地图生成)
- 基于Qt开发的AES文件加解密工具
- react 中 Warning A future version of React will block javascript 异常解决
- 个人购买云服务器的必要性和最常见几个用途?细节考虑
- Android中关于Manifest的权限注册问题
- vue移动端用什么数据可视化插件_前端必看的数据可视化入门指南