程序设计中有一条一直被程序员们牢记的信条——自顶向下,逐步求精。
这八字信条虽然观之简单,却是程序设计中解决难题最有效的方法,那我们今天就小小的聊一下这八个字的含义及一些应用。
与题目相对应,自顶向下,简单来说就是将一个庞大的程序分而治之,分成一小块一小块,从小块上着手,将复杂问题简单化,最后再由各小块拼装成为最后完整的大程序。
而逐步求精,就是将现实中的事物用逻辑思维使其抽象化,数据化,以达到更加利于表达的目的,使问题变的直观,简单。
这两种方法,有个共同点,就是都会简化问题,当二者叠加使用时,是不是忽然感觉以前所谓的难题变得十分清晰了?
大概讲了它们的含义,我们再来点干货,举些平时运用的例子。
拿杨辉三角举例
上图是杨辉三角的C语言代码
其中的嵌套循环是该代码的主体
外层循环表示层数,内层循环每层的的各个数字
那么我们是如何得到这个程序的呢?这就是自顶向下的一种思维,将大的问题化为小的,有点类似数学归纳法,我们只要找到每行数字的规律,题目的难度就会下降几个档次。
比如杨辉三角每行的数其实就是组合数,也可以说是二项式各项的系数,知道了这点,我们再利用逐步求精的思维使其抽象化,变成直观的算式,这样一道看似工程量巨大的题就不攻自破了。
当然,知道这些思想和熟练运用他们还是有一定差距的,我们要成为合格的程序员,就应当灵活运用它们。所以我的建议是平时做题的时候,尽量先在脑子里构建好整个程序,这样久而久之养成习惯,一个优秀的程序猿自然就诞生了。