Java中统计兔子的数量

今天是编写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开发,就简单的多了。

  • 第一天的学习思维导图
    -,

猜你喜欢

转载自blog.csdn.net/jiangyi_1612101_03/article/details/81229360
今日推荐