有一母牛,到4岁可生育,每年生一头,所生均是同样的母牛,到15岁绝育,不再能生,20岁死亡,问n年后有多少头牛?

在刚刚开始关于牛群问题,为了能更容易理解以及解决,我们可以利用递归的方法来解决这个问题;

不废话,直接上代码。

#include
using namespace std;
int niu(int year,int& num){	
	for(int i=1;i<=year;i++){
		if(i>=4&&i<15){
			num++;  //在绝育前的可生育的每一年都可以每年生一头母牛 
			niu(year-i+1,num);  //计算小牛生的牛数量 
		}
		if(i==20){  //当一头牛20岁时,则死亡 
			num--;
		}
	}
	return num;  //返回牛群的总数量
}

int main(){
    int num=1  //初始只有一头牛
    int y;  
	cout<<"请输入一共有多少年:";
	cin>>y; 
	cout<

在代码中我们可以知道,每递归一次,就可判断生下来的小牛是否可以生母牛,其递归中的 year-i+1 是小牛的年龄,有些人可能不知道未什么最后还要+1,这是因为当第一头牛生下的小母牛时,每过一年,小牛也要长一岁,例如七年后 大牛是七岁,小牛是四岁,它们会在同一年都生下一头牛。我也解释不清楚。....呜呜呜... 就比如当year=7时,7-i(i=4)=3,递归的话小于4,所以要在后面+1。

你可能感兴趣的:(c++)