经典兔子问题——Java中递归方法的使用
一、首先我们看一下题目要求
兔子从第三个月开始下一对崽子,然后以后每个月都下一对,假设兔子不死,并且他们的崽子也是这样的,问N月后一共多少只兔子?
二、对题目进行简要分析:
月份 | 兔子数量 |
---|---|
1 | 1(原来的兔子) |
2 | 1(原来的兔子) |
3 | 2(原来的兔子+原来的生下的一对) |
4 | 3(原来的兔子+原来的生下的两对) |
5 | 5(原来的兔子+原来的生下的三对+三月份的兔子生下的一对) |
总结 | 从第三个月开始,每月的兔子都是f(month-1)+f(month-2)只 |
三、具体代码实现方法
1.递归的实现
//定义一个方法
public static int sum(int month) {
//判断是否为1,2月份
if(month==1 || month==2) {//是,输出1只
return 1;
}else {//否,按递归计算
return sum(month-1)+sum(month-2);
}
}
2.方法的调用
//程序入口
public static void main(String[] args) {
//创建键盘扫描器
Scanner key = new Scanner(System.in);
//定义一个标记
boolean flag = true;
while(flag) {
//提示用户输入查询的月份
System.out.println("请输入您要查询的月份:");
//接收用户输入的月份
int month = key.nextInt();
//调用方法
int num = sum(month);
//按月份输出兔子数
System.out.println(month+"月共有"+num+"只兔子。");
}
//关闭键盘扫描器
key.close();
}
四、运行效果图
今日分享就到这儿了,喜欢的朋友可以私信我哟!