1. 程式人生 > >【程式1】 TestRabbit.java 題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子, //假如兔子都不死,問每個月的兔子總數為多少?

【程式1】 TestRabbit.java 題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子, //假如兔子都不死,問每個月的兔子總數為多少?

//【程式1】 TestRabbit.java 題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,
//假如兔子都不死,問每個月的兔子總數為多少?  1.程式分析: 兔子的規律為數列1,1,2,3,5,8,13,21....(又稱斐波那契數列或黃金分割數列) 
//問題你要保證每次生的兔子都是一個雌一個雄,而且只能使他們一塊出生的才能交配。
//間隔不同的月份兔子規律也不一樣,如從第2個月起每個月都生一對兔子,則規律為:1,2,4,8,....;
//如從第4個月起每個月都生一對兔子,則規律為1,1,1,2,3,4,6,9,13..........;
public class TestRabbitApp {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		TestRabbit tr=new TestRabbit();
		tr.printCount2(20);//遞迴方法
		//tr.printCount(20);//賦值方法
	}

}
class TestRabbit{
	int a1,a2;
	TestRabbit(){
		a1=1;a2=1;
	}
	public void printCount(int month){
		int i=1,sum=0;int t;
		for(;i<=month;i++){
			if(i==1||i==2)
				sum=1;
			else sum=a1+a2;
		System.out.println("第"+i+"個月時兔子總數為: "+sum+"對");
		 if(i>2){
		  t=a2;
		  a2=a1+a2;
		  a1=t;
		 }
		}
	}
	public int fun(int month){
		if(month==1||month==2)
			return 1;
		else 
			return fun(month-1)+fun(month-2);
	}
	public void printCount2(int month){
		for(int i=1;i<=month;i++){
			System.out.println("第"+month+"月時,兔子總數為: "+fun(i)+"對");
		}
	}
}