好气啊,自己找规律找错了。看了下别人ac的代码,思路一下子清晰了:题n年牛的总数等于n-1年的母牛数加上第n年新增的母牛数,第n年只有n-3年的那些母牛才能产母牛,所以第n年的母牛数等于第n-1和n-3年的母牛数的和,即sum(n)=sum(n-1)+sum(n-3),然后递归ac代码如下:
#include <iostream> #include<math.h> #include <iomanip> #include<cstdio> #include<string> #include<map> #include<vector> #include<algorithm> #include<stdlib.h> using namespace std; int cow(int n) { if(n<=4){ return n; } return cow(n-1)+cow(n-3); } int main() { int n; while(cin>>n) { if(n==0){ break; } cout<<cow(n)<<endl; } return 0; }