递归使用

题目链接: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语言中是很有用的,可以避免很多不必要的麻烦,递归函数的定义也是有一个小模板的,这加深了我对递归知识的记忆。

你可能感兴趣的:(递归使用)