题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2018
思路:1.先列出前九年的母牛数量,分析数值可知母牛数量的分界线在第四年,前四年的母牛数量等于第几年,从第五年起,第n年的母牛数量等于第n-1年加上n-3年的母牛数量,由此可得出求母牛数量的规律;
2.用一个递归调用来表达母牛数量变化的规律,然后按照题目要求写出基本的代码,在调用上面所写的递归函数求母牛的数量。
代码如下:
#include"stdio.h"
#include"math.h"int fun(int n)
{ if(n<=4) return n; return fun(n-1)+fun(n-3);
}int main()
{ int n,a,sum; while(scanf("%d",&n)!=EOF)
{ sum=0; if(n<=0||n>55) break;
{ if(n<=4)
{ printf("%d\n",n);
} if(n>4)
{ sum=fun(n-1)+fun(n-3); printf("%d\n",sum);
}
}
} return 0;
}
总结:本来对递归的使用不够熟悉,做完这一个题之后,感觉递归在C语言中是很有用的,可以避免很多不必要的麻烦,递归函数的定义也是有一个小模板的,这加深了我对递归知识的记忆。