编程珠玑笔记(第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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Winform基础控件美化

    Winform基础控件美化这段时间重写了Winform的TextBox,ComboBox,NumericUpDown,DateTimePicker(还在实现中),Panel,Button控件主要实现了,这些控件的垂直居中,可自定义边框颜色等功能,支持fontawesome图标.效果见下图项目目录见下图Common是公共方法Control为继承类控件包括Button,Panel,(DateTime…

    2022年5月10日
    45
  • WinForm拖动没有标题栏窗体的方法

    建立窗体的名称修改为:Form_HoverTree文后附有源码下载。主要代码:效果图:可以看出,这个窗体为自定义形状的窗体,没有标题栏。具体参考:http://hovertree.com/h/bj

    2021年12月28日
    40
  • object object_无监督命名实体识别

    object object_无监督命名实体识别目录1、NER简介2.NER方法2.1传统机器学习方法:HMM和CRF2.2LSTM+CRF:BiLSTM-CRF2.3CNN+CRF:IDCNN-CRF2.4BERT+(LSTM)+CRF:BERT实现(1)获取BERT预训练模型(2)修改数据预处理代码:DataProcessor(3)构建模型:create_model(4)模…

    2025年8月20日
    4
  • HBase面试题总结1「建议收藏」

    HBase面试题总结1「建议收藏」hbase的特点是什么??1)hbase是一个分布式的基于列式存储的数据库,基于Hadoop的hdfs存储,zookeeper管理。2)hbase适合存储半结构化和非结构化数据,对于结构化数据字段不够确定或者杂乱无章很难按一个概念去抽取数据;3)hbase为空的纪录不会被存储;4)基于的表包含rowkey,时间戳,列族,新写入数据时,时间戳更新,同时可以查询到以前的版本;5)hbase是…

    2022年5月8日
    57
  • css画三角形

    css画三角形实现原理将div的高和宽设置为0,然后设置四个border不同的颜色。效果如下:div#triangle{width:0;height:0;border-top:50pxsolidblue;border-right:50pxsolidred;border-bottom:50pxsolidgreen;bord…

    2022年6月30日
    29
  • Redis能做什么?不能做什么?

    Redis能做什么?不能做什么?

    2021年11月4日
    50

发表回复

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

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