三年程序员之后的思考

         直接开始反思。

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

        题目:古典问题:有一对兔子,从出生后第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);

     }

}

 

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

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

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值