3.6.2 经验总结
求最大值问题并非很难的问题,但解决该问题的过程反映了一些有关算法和程序设计的 重要的思想。
对于一个比较复杂的计算问题,往往有多种解决方法。作为算法设计者,通常不要凭着 第一感去编写代码,而是应当三思而后行。即使已经设计出了一个算法,也应当多问自己是 否还有更好的解法。
程序设计的首要任务是找到正确的算法,然后就应当去追求清晰的程序结构、代码的执 行效率、功能的可扩展性、良好的风格等目标。好的算法和程序就像逻辑的诗歌。读和维护 都很愉快,
虽然我们编写的程序是让计算机执行的,但在设计解决问题的算法时,常常可以站在人 类的立场考虑,问问自己假如是人类去解决这个问题,会有什么好方法?人类在生活实践中 积累了大量的行之有效的思考方式和解决办法,它们往往可以应用到计算机程序设计当中。 案例中虽然我们考虑的是三个数据求最大值的问题,但在设计过程中我们的思路并不局 限于这个特例问题。事实上,我们时时会考虑某个解决方法是否适用于更一般的 n 个数据的 情形。计算机程序设计中常有这种情形,通过考虑一般问题得到的算法,往往比只考虑特例 问题得到的算法还要好。因此,在设计程序时应该多考虑如何使程序更一般化,毕竟一般化的程序有可能应用到更多的问题当中。
上一节的第四个策略利用了现成的 max 函数,不能认为这是程序设计中的“投机取巧”。 相反,这个例子反映了一条重要经验:很多聪明的程序员已经设计出了无数好的算法和程序。 当你所要解决的问题看起来很普通,可能有很多人已经遇到过这个问题,那么你就可以试着 寻找该问题的现成解法。初学编程时可以尽量自己从头开始设计一个算法,但职业程序员都 懂得借鉴、重用代码。