题目:
开始有一头母牛,每年年初母牛会生小母牛,小母牛的第四年会再生一头小母牛。即一开始的这头母牛每年都会不断的生小母牛,到第五年时,这头母牛第一年生的小母牛就会也生小母牛了,问第n年母牛总数
思路:
用递推法,去倒推母牛总数中包含小母牛和母牛的数量,第一年是一头母牛,以后这头母牛每年都会生小母牛,到第五年的时候,原来这头大母牛其实已经生了四头小母牛了,但是她第一年生的小母牛已经长大了,她也生了一头小母牛,故这一年母牛总数等于前一年算的母牛总数4加上第一年母牛在第五年生的小母牛,第六年就是第五年生的母牛总数加上第二年有多少头母牛,a[n]为母牛总数,于是得出递推公式a[n]=a[n-1]+a[n-3];
第一年应该是2头,第二年3头,第三年4头,第四年六头
代码:
#include <iostream>
using namespace std;
int main()
{int n;
while(cin>>n)
{
int a[56]={0};
if(n==0)break;
for(int i=1;i<=4;i++)
{
a[i]=i+1;
}
for(int i=5;i<=n;i++)
{
a[i]=a[i-1]+a[i-3];
}
cout<<a[n]<<endl;
}
return 0;
}