编程珠玑笔记(第4章):编写正确的程序

编程珠玑笔记(第4章):编写正确的程序

循环不变式(loop invariant):关于程序状态的断言(assertion),在每次循环迭代之前和之后都正确(循环执行过程中不一定为真)。在循环中分为以下三个阶段:

1、初始化:循环初次执行的时候不变式为真。

2、保持:如果在某处迭代开始的时候不变式为真,那么循环体执行完毕的时候仍然为真。

3、终止:循环退出的时候不变式为真。

利用数学归纳法知,1和2成立之后,3必然成立。

 

选择控制结构:在程序运行过程中,多个分支中的一个被执行,之前的断言以及分支的条件可以推倒出下一个断言。

迭代控制结构:在保证了循环不变式的条件下,还要满足的一个条件是:循环的终止!(二分查找的终止原因是,可能性范围在不断缩小直至为空)

契约编程:函数使用两个断言,即前置条件(precondition)和后置条件(postcondition)。

 

雷人瞬间:虽然第一篇二分搜索论文在1946年就发表了,但是第一个没有错误的二分搜索程序却直到1962年才出现。中间隔了16年啊!!!

转载于:https://www.cnblogs.com/jiangyoumiemie/p/3460781.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109960.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Word——Word在试图打开文件时遇到错误的一种解决办法

    Word——Word在试图打开文件时遇到错误的一种解决办法Word在试图打开文件时遇到错误的一种解决办法一、遇到的情况二、解决办法 1.将此word文件压缩 2.删除此word文档 3.将压缩包解压一、遇到的情况二、解决办法 1.将此word文件压缩 2.删除此word文档 3.将压缩包解压…

    2022年6月11日
    38
  • yum安装与卸载软件常见命令「建议收藏」

    yum安装与卸载软件常见命令「建议收藏」1.使用yum安装和卸载软件,有个前提是yum安装的软件包都是rpm格式的。安装的命令是,yuminstall~,yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突,那么最好,下载安装;如果有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,你可以自己作出判断;删除的命令是,yumremove~,同安装一样,yum也会查询数据库,给出解决依赖关…

    2022年6月12日
    44
  • azkaban配置依赖_azkaban安装

    azkaban配置依赖_azkaban安装1.下载Azkaban1.1登陆Azkaban的官网:https://azkaban.github.io/点击Downloads,如图示:1.2点击之后,在跳转的页面中选择Releases,进入页面选择相应的版本下载,这里选择的版本是3.70.0版本,点击“Sourcecode(tar.gz)”下载。1.3选择自己要下载的源码,下载2.环境准备2.1在安装之前要安装jdk,…

    2025年7月7日
    2
  • 让我教你怎么做个人_如何制作app平台

    让我教你怎么做个人_如何制作app平台我们都知道,开发一个app很大程度依赖服务端:服务端提供接口数据,然后我们展示;另外,开发一个app,还需要美工协助切图。没了接口,没了美工,app似乎只能做成单机版或工具类app,真的是这样的吗?先来展示下我的个人app,没有服务端,没有美工完成的,换言之,我干了所有人的活:这个app叫“微言”,他对于我意义很重大,最初微言只是我一个练手的项目,刚刚工作,技术有限,微言只是sqlite

    2022年10月21日
    4
  • 网页音乐播放器代码

    网页音乐播放器代码网页音乐播放器代码如果你也想往自己的博客里,网页里加入音乐播放器,只要复制下面的网页音乐播放器代码,做适当的修改就可以啦!有很多播放器可以选择,不要挑花眼哦!中true或1表示自动播放,false或0表示手动播放loop=”true”中的true或1表示重复播放,f

    2022年6月16日
    35
  • VirtualBox共享文件夹设置

    VirtualBox共享文件夹设置环境 ubuntu 18 04 2 desktop amd64Virtual 步骤 1 an zhu

    2025年6月14日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号