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);
}
}