古典问题
需求
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子假如兔子都不死,问第n个月的兔子对数为多少?
问题分析
第1个月 1
第2个月 1
第3个月 2
第4个月 3
第5个月 5
第6个月 8
第7个月 13
第8个月 21
第9个月 34
第10个月 55
......
从中找出规律:从第三个月开始,前两个月兔子数之后为第三个兔子总数
预想效果
输入0月份时,输出错误
请输入需要查询的月份:0
月份输入错误!
输入1月份时,输出1对
请输入需要查询的月份:1
第1个月的兔子对数为:1对
输入2月份时,输出1对
请输入需要查询的月份:2
第2个月的兔子对数为:1对
输入10月份时,输出55对
请输入需要查询的月份:10
第10个月的兔子对数为:55对
输入20月份时,输出6765对
请输入需要查询的月份:20
第20个月的兔子对数为:6765对
代码实现
//包名
package top.gaojc.test;
//导包
import java.util.Scanner;
//声明一个类名为Rabbit的类
public class Rabbit {
// mian方法 程序入口
public static void main(String[] args) {
/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子
假如兔子都不死,问第n个月的兔子对数为多少?*/
/*问题分析
第一个月 1
第二个月 1
第三个月 2
第四个月 3
第五个月 5
第六个月 8
第七个月 13
第八个月 21
第九个月 34
......
从中找出规律:从第三个月开始,前两个月兔子数之后为第三个兔子总数
*/
//键盘录入
Scanner sc = new Scanner(System.in);
System.out.print("请输入需要查询的月份:");
//获取键盘录入值 月份
int month = sc.nextInt();
//定义兔子总对数
int rabbitSum = 0;
//定义上个月的兔子个数 也就是2月兔子的个数 下面会用for循环相加 兔子总对数=上个月兔子对数+上上月兔子对数
int rabbitOne = 1;
//定义上上个月的兔子个数 也就是1月兔子的个数
int rabbitTwo = 1;
//如果输入的月份为1或者2 那么兔子的对数都是1
if (month == 1 || month == 2) {
rabbitSum = 1;
// 打印输出
System.out.println("第" + month + "个月的兔子对数为:" + rabbitSum + "对");
} else if (month < 1) {
// 如果月份小于1 输出月份输入错误
System.out.println("月份输入错误!");
} else {
//使用for循环 i是月份 从三月开始累加 循环到最后i等于输入的月份 月份++ 3 4 5 6...
for (int i = 3; i <= month; i++) {
//兔子总对数=上个月兔子对数+上上月兔子对数
//这个总对数(三月兔子的总对数)=第一个月+第二个月
rabbitSum = rabbitOne + rabbitTwo;
/* for循环 月份++操作
也是说这轮循环结束之后
下轮循环中上个月的兔子对数就是这个月总的兔子对数
下轮循环中上上个月的兔子对数就是本次循环中上个月的兔子对数*/
//上个月的对数赋值给上上个月
rabbitTwo = rabbitOne;
//总数赋值给上个月
rabbitOne = rabbitSum;
}
// 打印输出
System.out.println("第" + month + "个月的兔子对数为:" + rabbitSum + "对");
}
}
}
(~~~~~~~~~~~~~~~~~~~~~~~~~~~~)
联系阿超
(可解疑解答,无偿)
阿超QQ:2425991616
阿超微信:2425991616
阿超邮箱:2425991616@qq.com || aboutgaojc@163.com
扫码添加阿超微信
扫码添加阿超QQ
欢迎关注阿超的公众号!
如果这篇文章帮助到了您,这里还可以打赏博主哦~m_m