/*
* Yn幼=Y(n-1)幼-Y(n-5)成+Yn成
* Yn成=Y(n-1)成+Y(n-5)成
* 推到出
* Yn幼=Y(n-1)幼+Y(n-1)成
* 以下Yn成 用函数g(int year)表示
* Yn幼 用函数f(int year)表示
*/
public class CowHouse {
private int smallCow;
private int bigCow;
private int allnum;
public CowHouse(int snum,int bnum) {
this.smallCow=snum;
this.bigCow=bnum;
}
/*
* g(n)表示第n年成年母牛的数量
*/
public int g(int year) {
if(year<5)
return bigCow;
else if(year==5)
{
return bigCow+smallCow;
}
else
return g(year-1)+g(year-5);
}
/*
* f(n)表示第n年后幼崽的数量
*/
public int f(int year) {
if(year==0)
return smallCow;
else
return f(year-1)+g(year-1);
}
/*
* getAllnum(n)表示第n年牧场牛的总数
*/
public int getAllnum(int year) {
// TODO Auto-generated method stub
return g(year)+f(year);
}
}
public class TestCowHouse {
public static void main(String[] args) {
// TODO Auto-generated method stub
CowHouse c=new CowHouse(0,1);
int year=30;
System.out.println("母牛数:"+c.g(year));
System.out.println("幼崽数: "+c.f(year));
System.out.println("总数: "+c.getAllnum(year));
}
}