课程分类

课程介绍
课程目录
用户评论
课程介绍
课程目录
用户评论

你将获得

  • 掌握某些知识点
  • 学会某些技巧(或思路)

教学服务

  • icon

    1v1专属答疑服务

  • icon

    BAT专家面试辅导

讲师介绍

  • 计算机软件博士,有32年软件开发和教学经验,《深度学习程序设计实战》作者。方老师擅长用通俗易懂的实例,结合代码,讲解复杂难懂的数学和计算机理论知识。他的课程常融会贯通计算机各学科领域,如博弈、编译、递归、多线程、贝叶斯网络等等。许多学生认为方博改变了他们对计算机科学和数学的看法,影响了他们一生。

  • 课程详情

    自顶向下程序设计方法的关键是分治法,即把一个大问题分解为若干小问题,每个小问题再分解为更小的问题,......,以此类推直到问题可以直接解决为止。本课程用一个有趣的问题——扑克牌翻牌问题为例,说明了用自顶向下程序设计方法解决问题的思路。扑克牌翻牌问题是:

    有一副只有点数没有花色的扑克牌,点数分别是1,2,3,...,20,一共20张。我们把所有牌正面朝下堆成一叠放在手上,然后用另一只手翻开第一张,发现是1点。我们把这张1点牌放在一边,然后再摸下一张牌。这时我们并不看它的点数,而是把它放在这叠牌的末尾,使之成为最后一张。接着,我们翻开下一张牌,发现是2点。我们把这张2点牌也放在一边,然后按顺序摸两张牌,不看点数,而是把它们放在这叠牌的末尾。注意:是把它们一起放在末尾还是把它们一张一张按顺序放在末尾的结果是一样的。再翻开下一张牌,发现是3。这张3点牌也被放在一边,我们再一张一张地摸3张牌,并按顺序放在末尾,...。以此类推,直到把所有牌都翻开并放在了一边。检查被翻开的牌的点数,发现按顺序分别是1、2、3、...、20。问:最初牌的顺序是什么?

    对于第一次接触这个问题的人来说,扑克牌翻牌问题似乎有些难度。但是只要按照自顶向下的程序设计方法,先编写主程序,然后编写被主程序直接调用的子程序,再编写子程序的子程序,......,以此类推,这个问题也是很好解决的。请看视频。