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

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

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

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

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

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

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

 

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

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

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

 

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

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • plsql 连接oracle数据库详细配置「建议收藏」

    plsql 连接oracle数据库详细配置「建议收藏」第一次用这种方式连接oracle数据库,自己百度搞了快两个小时才弄好,百度的资源也不靠谱,看了好多都不完整,搞完了报各种错误,各种连不上数据库,自己整理下资料,希望给其他的同行予以借鉴,不能保证每个人都能操作成功!毕竟有时真的得看人品了,呵呵!第一步:先安装plsql客户端,plsql客户端是必须的,我的是同事给的plsql(英文版客户端)安装很简单(下一步下一步…….)就不做说明!

  • Android打开相册_安卓10相册无法使用

    Android打开相册_安卓10相册无法使用最近在学习安卓的过程中,学到了从相册中选取图片的内容。//java版Activity的代码importandroid.app.Activity;importandroid.content.Intent;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.net.Uri;importandroid.os.Bundle;importandroid.view.View;

  • QCustomPlot开发笔记(一):QCustomPlot简介、下载以及基础绘图[通俗易懂]

    QCustomPlot开发笔记(一):QCustomPlot简介、下载以及基础绘图[通俗易懂]QCustomPlot开发笔记系列整理集合,这是目前使用最为广泛的Qt图表类(Qt的QWidget代码方向只有QtCharts,Qwt,QCustomPlot),使用多年,系统性的整理,过目并整理了原有文档,本系列旨在系统解说并逐步更新其各种Demo示例。

    2022年10月10日
  • Flash cookie — 本地共享对象(LOCAL SHARED OBJECTS)

    Flash cookie — 本地共享对象(LOCAL SHARED OBJECTS)写道本地共享对象(有时也称为“Flashcookie”)是一些可由您访问的站点在您的计算机上创建的数据文件。共享对象大多数情况下用来增强您浏览Web的体验。网站可以在您的计算机上编写cookie,当您下次访问该网站时,它将加载该cookie及其信息,从而使您拥有一种更加个性化的体验。例如,您可能让站点记住您的登录名。该信息存储在cookie中,并在您下次访问时被检索…

  • 数据挖掘选择题_数据挖掘算法例题

    数据挖掘选择题_数据挖掘算法例题目录一、填空题二、计算题一、填空题❃随着信息技术的高速发展,数据库应用的规模、范围和深度不断扩大,网络环境成为主流等等。产生“数据丰富而信息贫乏”现象。❃“数据丰富而信息贫乏”现象导致大数据概念。❃数据(Data)、信息(Information)和知识(Knowledge)是广义数据表现的不同形式。❃大数据时代的数据挖掘技术需求分析的流派:数据论、方法论、环境论、特征论…

  • C语言标准库函数大全(ctype、time 、stdio、stdlib、math、string)

    C语言标准库函数大全(ctype、time 、stdio、stdlib、math、string)文章目录C语言函数库一.C语言函数库一.<assert.h>二.<ctype.h>三.<errno.h>四.<limits.h>五.<locale.h>六.<math.h>七.<setjmp.h>八.<signal.h>九.<stdarg.h>十.<stddef.h>十一.<stdio.h&.

发表回复

您的电子邮箱地址不会被公开。

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