Top-down design——解决问题的基本法

来源:互联网 发布:运动keep是什么软件 编辑:程序博客网 时间:2024/06/06 07:28

简介

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

详解

不得不说,这个名字听起来好像很高深莫测,但其实所谓的“自顶向下”是符合我们大脑的一般思考过程的,当我们在遇到一些多过程的问题时会很自然的自顶向下分解问题。比如做笔记,通常我们分三步走:1.拿纸 2.拿笔 3.写字。既然每个人都会,那为什么还要特意提出这个概念呢?这是因为像那样下意识地分解问题只会在过程较少时实现,当过程变得十分繁杂时人们的大脑便无法轻松完成问题分解,这时就需要人们紧扣自顶向下的基本法,主动地去分解问题,逐步求精。
这里写图片描述

例子

这里写图片描述
哥德巴赫猜想是数论中的一个著名难题, 是由法国数学爱好者克里斯蒂安·哥德巴赫于1742年在给著名数学家欧拉的一封信中提出的。
“哥德巴赫猜想”可以表述为:任何一个大于等于4的偶数均可以表示为两个素数之和。
尽管这个问题看来如此简明清晰, 但二百多年来, 虽有无数数学家为其呕心沥血、绞尽脑汁, 却始终无人能够证明或者证伪这个猜想 。
求解
第一步 提出问题: 验证哥德巴赫猜想

第二步 设一上限数M,验证从4到M的所有偶数是否能被分解为两个素数之和
1. 定义一个变量X,初值为4
2. 每次令其加2,并验证X能否 被分解为两个素数之和,直到 X不小于M为止

第三步 如何验证X是否能被分解为两个素数之和
1. 从P=2开始
2. 判别X—P是否仍为素数
3. 若是,打印该偶数的分解式
4. 否则,换更大的素数,再继续执行2;如此循环,直到用于检测的素数大于X/2且X 与其之差仍不是素数,则打印“哥德巴赫猜想”不成立

第四步 查找下一个素数
(1)当前素数P加1
(2)判别P是否是素数
(3)若是素数,返回P
(4)否则,P加1,继续执行( 2)

经过四步分解精化,将“验证哥德巴赫猜想”这个命题已经分解为计算机可以求解的数学模型了,模块化数学模型,化繁为简,最终得出结果。

原创粉丝点击