概述:有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。求某一年共有多少头牛。
思路:在前三年按照每年一头增加,从第四年开始,第四年生的牛对应第二年有的牛,第五年生的牛对应第三年有的牛,以此类推,fn = f3 + f1;
f1 = f2; //f1代表前3年
f2 = f3; //f2代表前2年
f3 = fn; //f3代表前1年。可解。
感想:比较简单的一道递推的题目,总结规律可解。
#include <iostream>
#include<fstream>
using namespace std;
int main()
{
//ifstream cin("in.txt");
int n, i;
int f1, f2, f3, fn;
while (cin >> n&&n != 0)
{
//下面求第n年有几头牛
f1 = 1;
f2 = 2;
f3 = 3;
if (n == 1)
cout << f1 << endl;
else if (n == 2)
cout << f2 << endl;
else if (n == 3)
cout << f3 << endl;
else
{
for (i = 4; i <= n; i++)
{
fn = f3 + f1;
f1 = f2; //f1代表前3年
f2 = f3; //f2代表前2年
f3 = fn; //f3代表前1年
}
cout << fn << endl;
}
}
return 0;
}