自顶向下,逐步求精

是什么
  • 定义
    所谓自顶向下就是将问题分解成一套子问题。这一过程一直持续到每一个子问题足够基础,不需要进一步分解为止。
    所谓逐步求精就是将每一个子问题细化解决,制定策略。当所有子问题都解决后,这个问题也便解决了。

  • 图像分析
    这里写图片描述
    从树状图来看:第0层即要解决的问题,第1层,将问题分为了3个子问题,第二层和第三层继续将问题细分,直到不能继续细分位置。从中可以看出:自顶向下,也就是从抽象到具体的过程。

  • 作用
    自顶向下,逐步求精的思想到底有什么作用呢?其实,在我们的日常生活中,已经不知不觉用到了这种方法。比如:我们要邀请好友来聚会,我们可以这样子分析:
    这里写图片描述
    这便是该思想的实际应用,我们将举办聚会这个抽象的问题分层了好几个问题,这便实现了具体化,决解聚会问题,只需把这些子问题解决便可以了。
实例

在此,我们用自顶向下,逐步求精的方法来分析洗衣机洗衣服的过程,假设洗衣机有以下功能:

water_in_switch(open_close) // open 打开上水开关, close关闭
water_out_switch(open_close) // open 打开排水开关, close关闭
get_water_volume() //返回洗衣机内部水的高度

motor_run(direction) // 电机转动。 left左转, right右转, stop停
time_counter() // 返回当前时间计数,以秒为单位
halt(returncode) //停机, success 成功 failure 失败
  • 分析
    这里写图片描述
  • 伪代码
//设置模式,水位
read mode,waterlevel

//注水
water_in_switch(open)
while (get_water_volume()<waterlevel) 
        ;
water_in_switch(close);

//浸泡
start_time=time_counter();
while (time_counter()-start_time <= time_setting_soak[mode])
        ;

//洗衣
start_time=time_counter();
while (time_counter()-start_time <= time_setting_wash[mode]) 
        motor_run(left);
      motor_run(stop);
        motor_run(left);
        motor_run(stop);
        motor_run(left);    
        motor_run(stop);
        motor_run(right);
        motor_run(stop);
        motor_run(right);
        motor_run(stop);
        motor_run(right);
        motor_run(stop);

//排水,脱水
water_out_switch(open);
start_time=time_counter();
motor_run(right);
while (time_counter()-start_time <= time_setting_drain[mode])
        ;
motor_run(stop);
water_out_switch(close);

//结束
halt(success);

从以上分析中,我们已经介绍了 自顶向下,逐步求精思想的概念和应用,要想真正掌握,还需多加训练。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值