# 差一错误

> 差一错误（英语：Off-by-one error，缩写OBOE）是在计数时由于边界条件判断失误导致结果多了一或少了一的错误，通常指计算机编程中循环多了一次或者少了一次的程序错误，属于逻辑错误的一种。比如，程序员在循环中进行比较的时候，本该使用“小于等于”，但却使用了“小于”，或者是程序员没有考虑到一个序列是从0而不是1开始（许多程序语言的数组下标都是这样）。在数学领域，此错误也时有发生。

- ID: m00261
- 分类: structure
- 领域: 逻辑学

## 定义

指在计数或边界处理时，结果比正确值多1或少1的常见错误（例如，循环从0开始还是从1开始，围栏的柱子数比间隔数多1）。脚手架作用：注重边界条件的精确性。它提醒我们，在处理任何涉及范围、周期、步骤的问题时，最容易出错的地方往往是开头和结尾（边界），需要给予额外的关注。

## 机制

在计数、索引、边界处理中因起点/终点设定偏差（如从 0 还是 1 计）导致结果多/少 1；根源于"区间端点"与"计数"的混淆（柱子数=间隔数+1）。

## 练习

明确区间是闭/开、起点与终点；用"间隔数 vs 元素数"核对；对循环与数组边界做单测；用区间表示法（[a,b]）显式化。

## 脚手架用法

注重边界条件的精确性。它提醒我们，在处理任何涉及范围、周期、步骤的问题时，最容易出错的地方往往是开头和结尾（边界），需要给予额外的关注。

[阅读网页](https://thinkingmodels.site/entries/detail/m00261)
