1. 程式人生 > >非常經典的JAVA程式設計題(兔子規律)

非常經典的JAVA程式設計題(兔子規律)

題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
1.程式分析: 兔子的規律為數列1,1,2,3,5,8,13,21….

/**
 * 兔子問題
 * 斐波那契數列求值
 * @author Administrator
 *題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,
 *小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
 *1.程式分析: 兔子的規律為數列1,1,2,3,5,8,13,21....
 */
public class rabbit {

public static void main(String[] args) {
    MyFunction(20);
}

    //我自己寫的方法
    public static void MyFunction(int months){
        int lastLastGiveBirth=0;    //上上個月可生育的兔子數量
        int lastGiveBirth=0;        //上個月可生育的兔子數量
        int count = 1;              //總數量  初始化為一對兔子
        for(int month = 1;month<=months;month++){
            int giveBirth = lastGiveBirth+lastLastGiveBirth;
            if(month==3){
                giveBirth = 1;
            }
            lastLastGiveBirth = lastGiveBirth;
            lastGiveBirth = giveBirth;
            count = count+giveBirth;
            System.out.println("第"+month+"個月的兔子對數:"+count);
        }
    }


    //遞迴方法實現(我認為好的方法)
    public static int fib(int month){
        if(month == 1 || month == 2){
            return 1;
        }else{
            return fib(month-1)+fib(month-2);
        }
    }

}