考研算法题 一共有多少头牛

int CalCowsNum(int Year){
int iCnt=0;

}
long lCowsNum= 1;

for(iCnt=1; iCnt<=iYear; iCnt++){
if(iCnt>=4){
if((iYear-iCnt)>3){
lCowsNum += CalCowsNum(iYear - iCnt);
else{
lCowsNum++;
}
}
}
}
return lCowsNum;
}

int main(){
int iYear =0;
scanf ("%d", &iYear);
prinf("In' %d years, There is %d cows.n" ,iYear, CalCowsNum(iYear):
return o;
}

输入20

思路:

年 奶牛数量
0 1
1 1
2 1
3 1
4 2
5 3
6 4
7 5
8 7
9 10
10 14
11 19
12 26
13 -36
14-50
15-69
16-95
17-131
18-181
19-250
20-345
寻找规律发现:当年数量是一年前的数量加上四年前的数量,
即:
0,1,2,3奶牛数量为分f(n)=1;
年数大于4时f(n)=f(n-1)+f(n-4);
所以可以用函数递归计算某一年的奶牛数量

把题目要求描述一下,才知道代码问题在哪里。

第三行单独的大括号不应该有吧,这不就直接函数结束了么
int CalCowsNum(int Year){
int iCnt=0;

}


#include <iostream>
using namespace std;
int cowssum(int birth)
{
    int count = 0;
    for(int i = birth + 4; i <= 20; i++)
        count  += cowssum(i);
    return count + 1;
}
int main()
{
    int b = cowssum(0);
    cout << b << endl;
    return 0;
}

这个代码更简单一点,一共是345只。

考研笔试题目,重点在于怎么结果分析出来,用的是什么算法,答案 为20年345头牛 !345怎么算出来的!!!

递归函数啊,这个就是一头牛每个年生一只小牛,小牛需要4年之后才能每年生一只小牛,问你20年之后共多少牛,直接运行一下结果就出来了啊
In' 20 years, There is 380 cows.n