#include <iostream>
using namespace std;
int f(int n);
int main()
{
int n;
while(cin>>n&&n!=0)
{
cout<<f(n)<<endl;
}
return 0;
}
int f(int n)
{
if(n<4)
return n; //第1,2,3年,各为1,2,3头
else
return f(n-1)+f(n-3); //第n年为前一年的和前3年的相加
}
这道题思考很久 最终还是斐波那契数列的变形
别人的题解
再理解一下,fn-1是前一年的牛,第n年仍然在,fn-3是前三年那一年的牛,但换句话说也就是第n年具有生育能力的牛,也就是第n年能生下的小牛数。参考博客 点击打开链接
编程序,求解这个公式就行了。
当然,第1-3年的数目,需要直接给出。
很像斐波那契数列,有不一样之处,道理、方法一样。其实,在编程之前,讲究先用这样的方式建模。