问题描述:
一只刚出生的奶牛,4年生1只奶牛,以后每一年生1只奶牛。
现有一只刚出生的奶牛,求n年后有多少奶牛?
分析:
第一年是一只到第四年开始增加1,以后这只奶牛奶牛开始每年新生一只奶牛,到第二个4年时,第一个4年生的奶牛开始生新奶牛,以后每年都生一只,其他的新生的羊也是如此。因此我们可以用递归的方求解此问题。
具体代码如下:
#include<stdio.h>
/*
一只刚出生的奶牛,4年生1只奶牛,以后每一年生1只奶牛。
现有一只刚出生的奶牛,求n年后有多少奶牛?
*/
int CalCowsNum(int iYear){
int iCnt =0;
long ICowsNum=1;//奶牛总数
for(iCnt =1;iCnt<=iYear;iCnt++){
if(iCnt>=4){//4年后奶牛数量开始增多
if((iYear-iCnt)>3){//第2个4年开始后产的奶牛开始生新的奶牛
ICowsNum +=CalCowsNum(iYear-iCnt);
}
else{
ICowsNum++;
}
}
}
return ICowsNum;//返回奶牛总数
}
int main(){
int iYear=0;
printf("请输入要求的年份:");
scanf("%d",&iYear);
printf("%d 年后的奶牛总数为: %d\n",iYear,CalCowsNum(iYear));
return 0;
}