zoukankan      html  css  js  c++  java
  • 编程珠玑笔记(第4章):编写正确的程序

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    退役 AFO
    object_id()函数
    DataRow数组根据指定列排序
    窗口函数详解
    窗口函数详细用法
    聚合函数count里面加条件
    C#全局钩子和局部钩子记录
    SqlServer日期时间函数
    SQL中字符串截取、连接、替换等函数的用法
    C# 字符串多行显示、文本换行
  • 原文地址:https://www.cnblogs.com/jiangyoumiemie/p/3460781.html
Copyright © 2011-2022 走看看