三年程序员之后的思考

         直接开始反思。

         最近有点时间,又看了看迭代,感觉这个一直一知半解,没有认真思考过原理,没有自己的理解。

        题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少对? 

现在就来说说什么才是最重要的,我认为不是问题的答案,最重要的是思考,思考我如何去解决这个问题。

以下是解题想法:

1月:1(最开始1)

2月:1(最开始1)

3月:1(上月1)+1(新出生1)

4月:2(上月2)+1(新出生1)

5月:3(上月3)+2(新出生2)

6月:5(上月5)+3(新出生3)

兔子总数=原有的+新生的,

那么原有的是多少呢,假设第x月,函数f(x)代表第x月兔子数量,那么原有的就是上个月兔子数量,也就是f(x-1),

那么新出生的是多少呢,题目一分析就知道两个月之前有多少对兔子新出生的就是多少,也就是f(x-2)。

那么函数f(x)就知道怎么写了

int f(x)//x是月份

{

     if(x < 0)

    {

        return 0;

    }  

    else  if(x==1 || x==2)

      {

       return 1;

       }

     else

     {

         return f(x-1)+f(x-2);

     }

}

反思:当年刚毕业那会其实对迭代不是很明白,也没有静下心来再去思考。

现在再拿过来思考,其实很简单,如果题目换一下,根据思路很快也就能得出结果。

但是这种解决问题的思考方式反而很重要。

猜你喜欢

转载自blog.csdn.net/u011263315/article/details/82255476
今日推荐