自顶向下
这个思想方法是将一个大问题分解为若干个小问题,来方便问题的解决。通常一个复杂的大问题是难以直接解决的,而将它分解成若干个较小的问题后,问题解决会变得较容易,而当解决了一个个小问题时,大问题也往往迎刃而解。
逐步求精
逐步求精是将现实问题经过几次抽象(细化)处理,最后到求解域中只是一些简单的算法描述和算法实现问题。即将系统功能按层次进行分解,每一层不断将功能细化,到最后一层都是功能单一、简单易实现的模块。
通过自顶向下,逐步求精的方法,我们可以使问题得到更好的解决。
下面让我以洗衣机洗衣服为例,尝试使用一下这个方法。先是将洗衣服这个问题分解成若干个小问题。
洗衣机洗衣服有这么几个基本过程:
1)注水
2)滚桶转动
3)排水
4)脱水
伪代码尝试实现如下
wash_clothes(){
注水
while (v(water) < 35L) {//注满35L的水
注水;
}
滚桶转动
int n;
for (n = 0; n <= 20; n++) {
转动一圈;
}
排水
while (桶中还有水){
排水;
}
脱水
for (n = 0; n <= 20; n++) {
转动一圈;
}
将实际问题抽象化,是求精过程之一。抽象实际问题后,用数学,代码知识就能更方便地解决大问题分解成的小问题啦。