java经典问题——兔子

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 

1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... (不知道这个是不是题目提供的


我看到这个问题的时候,如果没有看到后面的“兔子的规律为数列1,1,2,3,5,8,13,21”的时候,我是这样想得,兔子是一个生出两个来,而且总数也不是对,是个数,不知道这个题目表达的是跟我开始想的一样,还是跟“兔子的规律为数列1,1,2,3,5,8,13,21”提供的信息一样。


  如果按照“兔子的规律为数列1,1,2,3,5,8,13,21”提供的信息来分析:

  f(1) =1

  f(2)=1

  f(3)=f(2)+f(1)*1=2     //f(1)*1:表示第一个月的兔子每对可以生出一对了

  f(4)=f(3)+f(2)*1           //f(2)*1:表示第二个月的兔子每对可以生出一对了

……

类推的话,我们可以得出,

 f(n)=f(n-1)+f(n-2)*1     //n>=3

java代码:

public class Practise1 {
	
	static int MONTH = 6; //第几个月
	static int TYPE = 1;  //一对生几对

	private int getCount(int month, int type){
		int sum = 0;
		if(month == 1 || month ==2){
			sum = 1;
		}else{
			sum = getCount(month - 1,1) + getCount(month - 2,1)*type;
		}
		if(month == MONTH){
			System.out.println("month="+month+" sum="+sum);
		}
		return sum;
	}
	
	
	
	public static void main(String[] args) {
		
		(new Practise1()).getCount(MONTH, TYPE);
		
	}

}


你可能感兴趣的:(java,java,Java,JAVA)