人们在工作中进行编程时,有时会纠结程序该怎么实现比较好。纠结的原因有很多,比如是提升处理效率好,还是提高稳定性好等。有时迫于交付期限的压力,没有时间重写程序,于是选择了在当时看来最合适的方式进行开发。这也是没有办法的事。
但在解答谜题时,情况就不一样了。对于那些已经有正确答案的问题,我们必须要思考哪种解题方法更好。这种情况也许和做数学题类似。
例如数学计算题,其答案是唯一的。1+2+3+4+5+6+7+8+9的答案是45,但解题方法有很多种。我们既可以单纯地将各个数相加,也可以用等差数列得到答案,还可以用高斯在小学时就用过的倒序相加的方法进行计算( 图1.1 )。
图1.1 计算题的各种解法(从左往右依次是单纯相加、等差数列和倒序相加)
用于解答谜题的程序也是一样的。虽然答案只有一个,但是各个问题的解题方法和思路有所不同。正因为它们各不相同,问题的价值(求解的乐趣)才得以体现出来。
在掌握多种解题思路后,也许我们就能将这些解题思路用在现实场景中。在知道了多种解题方法后,我们还能研究和比较它们的利弊。