Java中统计兔子的数量
程序员文章站
2022-04-04 20:11:01
...
今天是编写Java的第一天
下面是今天解决的问题:一个关于统计兔子数量的java编程题目。
题目分析:
*题目1::
*有一对兔子,从出生后第3个月起每个月都生一对兔子,
*小兔子长到第三个月后每个月又生一对兔子,
*假如兔子都不死,问每个月的兔子对数为多少?
*
*
*程序分析:每个月的兔子个数规律
*a表示为一个月龄兔子, b表示两个月龄的兔子 c表示成年的兔子
*只有成年的兔子才有生育能力
*第1个月:( a + b*0 ) + c*0 = 1
*第2个月:(a*0 + b*1 ) + c*0 = 1
*第3个月: (a*1 + b*0 ) + c*1 = 2
*第4个月:(a*1 + b*1 ) + c*1 = 3
*第5个月:(a*2 + b*1 ) + c*2 = 5
*第6个月: (a*3 + b*2 ) + c*3 = 8
*第7个月:(a*5 + b*3 ) + c*5 = 13
*第8个月:(a*8 + b*5 ) + c*8 = 21
*第9个月:(a*13 + b*8 ) + c*13 = 34
*第10个月 (a*21 + b*13) + c*21 = 55
*第11个月 (a*34 + b*21) + c*34 = 89
*第12个月 (a*55 + b*34) + c*55 = 144
*/
/*
*变量分析:
*变量1 月份 : 第n月
*变量2 第n月中不可以生育的兔子个数: f1 只
*变量3 第n月中可以生育的兔子个数: f2 只
*变量4 第n月中兔子总量: fn 只
*/
/*
*数学表达式:
* 第一个月: f1 = a + b*0 = 1 , f2 = c*0 = 0 , fn = f1 + f2 = 1 ;
* 第二个月: f1 = a*0 + b*1 = 1 , f2 = c*0 = 0 , fn = f1 + f2 = 1 ;
* ------------------------------------------------------------------------
* 第三个月: f1 = a*1 + b*1 = 1 , f2 = c*1 = 1 , fn = f1 + f2 = 2 ;
* 第四个月: f1 = a*2 + b*1 = 2 , f2 = c*1 = 1 , fn = f1 + f2 = 3 ;
* 第五个月: f1 = a*2 + b*1 = 3 , f2 = c*2 = 2 , fn = f1 + f2 = 5 ;
* 第六个月: f1 = a*3 + b*2 = 5 , f2 = c*3 = 3 , fn = f1 + f2 = 8 ;
* 可以得出规律:fn--->f1 <-----|
* f1--->f2 |
* f2--->fn ----->|
* 即:f(n)= f(n-1)+ f(n-2);
代码块:
import java.util.Scanner;
public class RabbitCount {
public static void main(String[] args){
while(true){
//Scanner是一个类,用户能够从 System.in 中读取一个数:
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
//调用计算兔子总量的方法,并输出兔子总量
System.out.println("第" + n + "月的兔子总量"+fn(n));
}
}
//定义一个方法用于计算兔子总量
public static int fn(int n){
if((n == 1)||(n == 2)){
//n为第一月和第二月的时候兔子总量为1
return 1;
}else{
return fn(n-1) + fn(n-2);
}
}
}
总结:
完整的编写一个程序,所需要的步骤还是十分讲究的。这的代码是再记事本里面写的,用doc命令去运行的,处理起来是有一些繁琐,但更能够深入的了解java的运行机制,所以对于初学者而言还是有好处的。如果用Eclipse开发,就简单的多了。
- 第一天的学习思维导图
-,
上一篇: bootstrap用什么表格插件
下一篇: mysql group多列