【程序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)+"对");
		}
	}
}

你可能感兴趣的:(JAVA经典编程题)