简述“自顶向下,逐步求精”——面向过程程序设计方法

引入

 所谓“自顶向下,逐步求精”的程序设计方法,网络上有着如下的说法,一者是百度百科所述,另一者则为维基百科的说法。

自顶向下设计 :一种逐步求精的设计程序的过程和方法。对要完成的任务进行分解,先对最高层次中的问题进行定义、设计、编程和测试,而将其中未解决的问题作为一个子任务放到下一层次中去解决。这样逐层、逐个地进行定义、设计、编程和测试,直到所有层次上的问题均由实用程序来解决,就能设计出具有层次结构的程序。

——百度百科

In computer science, divide and conquer is an algorithm design paradigm based on multi-branched recursion. A divide and conquer algorithm works by recursively breaking down a problem into two or more sub-problems of the same or related type, until these become simple enough to be solved directly. The solutions to the sub-problems are then combined to give a solution to the original problem.

——Wikipedia


个人看法

 要说到“自顶向下”,那么肯定是有着一个顶部的存在——就是一个或若干个复杂的大的问题。那么将这复杂、大的问题划分为小问题,找出问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题,就是“自顶向下”方法的思路和体现。
  至于“逐步求精”,那就是将现实世界的问题经抽象转化为逻辑空间或求解空间的问题。复杂问题经抽象化处理变为相对比较简单的问题。经若干步抽象(精化)处理,最后到求解域中只是比较简单的编程问题。
 其中,具体可分为以下几钟不同的抽象处理方式:
①顺序结构
②选择结构
③循环结构
 而其中最复杂的要数循环结构,但这种方法却是解决问题较为有效的一种方法,比如说它可以解决洗衣机运行的问题,而今日我就将用这种“自顶向下,逐步求精”的方法实现普通洗衣机运行程序的伪代码。
 不过在这之前,我得先用一个简单的例子来熟悉熟悉这一种方法。


例1:杨辉三角

例1:输入一个数字n(1<=n<=10), 不在范围内的n输出“Out Of Range.\n” 输出杨辉三角的前n行
 为什么我会选择杨辉三角来充当本文的第一个例子而不选择简单的1+2+3+…+n这种问题来充当例子呢?
&esmp;很简单,那种1加到100的问题逼格不够,一看就是拿来敷衍的。(吐槽一发)
 那么,这个杨辉三角怎么样才能够用代码实现呢?
 方法有很多,因为这个数阵这么多年来早已经被人类给摸得七七八八了:
规律:
这里写图片描述
从上图可看出杨辉三角的几个显著特征:

 1. 每行数值左右对称&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值