有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
根据题目意思先来缕清一下思路:
第一年 初始值为 1 (也就是刚开始一头母牛)
第二年 2(也就是刚开始一头母牛+一头小母牛) )
第三年 3(也就是刚开始一头母牛+两头小母牛) )
第四年年 4(也就是刚开始一头母牛+三头小母牛) )
第五年 6(也就是刚开始一头母牛+加上四头小母牛+由于第二年生的一头小母牛又生了一头小母牛)
第六年 9(也就是刚开始一头母牛+加上第五头小母牛+由于第三年两头小母牛生了2头+一头母牛生了一头)
那么给出两种解决方法:
public static void main(String[] args) {
System.out.println(countCows(5));
}
public static int countCows(int years){
if (years==1) return 1;
if (years==2) return 2;
if (years==3) return 3;
if (years==4) return 4;
int[] yearsCows = new int[years+1];
yearsCows[1] =1;
yearsCows[2] =2;
yearsCows[3] =3;
yearsCows[4] =4;
for(int i=5;i<=years;i++){
yearsCows[i] = yearsCows[i-1]+yearsCows[i-3];
}
return yearsCows[years];
}
第二种用递归:
public static void main(String[] args) {
System.out.println(countCows(6));
}
public static int countCows(int years){
if (years==1) return 1;
if (years==2) return 2;
if (years==3) return 3;
if (years==4) return 4;
else {
return countCows(years-1)+countCows(years-3);
}
}

浙公网安备 33010602011771号