【递归】母牛的故事

描述:

有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第 n 年的时候,共有多少头母牛?

输入:

输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数 n(0<n<55),n 的含义如题目中描述。

n=0 表示输入数据的结束,不做处理。

输出:

对于每个测试实例,输出在第 n年的时候母牛的数量。

每个输出占一行。
分析:

第n年 1 2 3 4 5 6 7 8 9
牛的数量 1 2 3 4 6 9 13 19

第n年的牛数量=上一年的牛数量+三年前的牛数量

代码:


#include<algorithm>
#include<iostream>
#include<cstring> 
using namespace std;
int T[56];
int main(){
	int n;//第n年
    memset(T,0,56*sizeof(int));
    T[1]=1;
    T[2]=2;
    T[3]=3;
    T[4]=4;
	int m=4;//T存储的牛到第几年了 
	cin>>n; 
	while(n!=0){
	/**
	* 牛的数量等于上一年牛的数量加上今年出生的牛的数量
	今年出生的牛 的数量等于三年前牛的数量
	*也就是T(n)=T(n-1)+T(n-4)
	*第一年一头成年牛也就是T(1)=1,T(2)=2,T(3)=3,T(4)=4. 
	*
	*/ 
	if(n<5){
		cout<<T[n]<<endl;
	} else{
		for(int i=m+1;i<=n;i++){
			T[i]=T[i-1]+T[i-3];
		}
		m=n;
		cout<<T[n]<<endl;	
	}
		cin>>n;
	} 
	return 0;
}
发布了16 篇原创文章 · 获赞 3 · 访问量 468

猜你喜欢

转载自blog.csdn.net/gv_2486/article/details/104416727