1. 程式人生 > >Java中統計兔子的數量

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開發,就簡單的多了。

  • 第一天的學習思維導圖
    -,