有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
Input
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0
n=0表示输入数据的结束,不做处理。
Output
对于每个测试实例,输出在第n年的时候母牛的数量。?
每个输出占一行。
Sample Input
2
4
5
0
Sample Output
2
4
6
?
#include
using namespace std;
int main()
{
int a[56],t;
a[1]=1;
a[2]=2;
a[3]=3;
a[4]=4;
for(int i=5;i<=55;i++)
a[i]=a[i-1]+a[i-3];
while(cin>>t)
{
if(t==0) break;
cout<
}
return 0;
}
总规律是:今年母牛的数量=今年成熟的母牛的数量(因为可以产小牛)+去年母牛的数量。
循环的意思是:在第五年开始,数量等于去年的母牛数量+(第n年)第n-3年的母牛的数量。
总结:在这种递推,找规律的题目里,前几个数不一定符合递推规律,因为他们有可能恰好是递推的基数,这样就没法用推的方式把他们写到循环里。因此,找规律的题的话,递推规律是肯定存在的,但很可能要多列几组数据才能看出来(列完递推基数)。
补充,这类题可以先总结递推规律,即先不罗列数字(先不从数字上找规律),先从每个月数目增长来源上找规律,这样更方便写递推公式。