【遞歸】母牛的故事

描述:

有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請編程實現在第 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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章