由‘兔子问题’引发的一系列编程思考

今天逛网站无意遇到一些有趣的逻辑问题,其中一个便是‘兔子问题’。如下图:

 代码十分简洁明了。

但我一开始是没有看他的答案的,想要自己做出来。我的心路历程如下:

我看完题目的想法是,兔子有两个状态,成年期(可以生娃了)和幼年期(还不能生娃)。每个月发生两个事件,幼年期进入成年期,成年期生娃。

但仔细审题后,我觉得还是不妥,应该分为三个状态,刚出生,一月大,成年期。这三个状态我以A(刚出生),B(一月大),C(成年期)来标记,每个月发生的事件为A->B,B->C,C生产A。

实现起来则是设置三个变量A,B,C表示三个状态的兔子数量,for循环20个月,循环体中执行事件,C+=B;B=A;A=C;循环结束统计A+B+C;代码如下:

写完这段代码后,我才看了那个问题的答案。老实说,我第一次看答案的时候,我是不认的,因为我无法将答案的代码逻辑和题目的逻辑联系起来。但我复制答案代码运行,得到的结果和我的代码是一致的。

为什么呢?答案代码是基于怎样的逻辑写出来的?我根据我之前的心路历程演算再草稿上,一个月一个月的推算兔子数量。

答案代码的逻辑是根据每个月兔子的总数量之间的数字规律来编写的。抛开前两个月,从第三个月开始,每个月的兔子总数量为前两个月的和。

思路来到这里,我写这篇文的中心点来了,一个问题的两种实现方式,反应的却是截然不同的两种思路方式。

一种是我的思路方式,从题目给出的逻辑出发,将逻辑以代码的方式展示出来。另一种是答案的思路方式,从推导的数据出发,通过数据间的数学关系来编写代码。

对此,我不禁思考,哪种方式才是编程应有的正确思路方式?在我看来,我的方式是更符合题目逻辑的,每一行代码我都能从题目中找到对应逻辑。也就是说,我可以把现实的逻辑转换成代码,也可以通过读代码来解释出现实的逻辑。

但以我的思路去看答案的思路,我第一时间是没有看出来为什么要这么写,为什么这么写可以得出正确的答案。因为答案的逻辑脱离了直观的逻辑,而是反应了一种数据之间的规律。虽然答案代码更加简洁。但我无法接受。

有人能给我说说我的编程思路和答案的编程思路哪种更好吗?

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值