博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编程珠玑笔记(第4章):编写正确的程序
阅读量:7001 次
发布时间:2019-06-27

本文共 490 字,大约阅读时间需要 1 分钟。

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

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

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

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

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

 

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

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

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

 

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

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

你可能感兴趣的文章
轻松上手移动互联——百度SiteApp建造日志
查看>>
我从跑步中领悟到了什么?
查看>>
你的权限等于你的可见度
查看>>
Gartner:威胁情报的定义
查看>>
redis多实例重启脚本
查看>>
开发人员学Linux(4):使用JMeter对网站和数据库进行压力测试
查看>>
在51系列中data,idata,xdata,pdata的区别
查看>>
【Deeplearning】关注书目
查看>>
【再见RMQ】NYOJ-119-士兵杀敌(三),区间内大小差值
查看>>
loadrunner中Run-time-Setting设置
查看>>
SSL连接建立过程分析(1)
查看>>
port与大全portClose方法
查看>>
美丽的数学家:如果您讨厌数学,这些其实都是人生故事
查看>>
Kettle 中转换(transformation)的执行过程
查看>>
读书笔记-互联网思维阅读10其中一本书《自由》
查看>>
Spark入门实战系列--5.Hive(上)--Hive介绍及部署
查看>>
tomcat设置web根目录
查看>>
CF 444B(DZY Loves FFT-时间复杂度)
查看>>
OCP-1Z0-051-名称解析-文章12称号
查看>>
UVALive 4225 Prime Bases 贪心
查看>>