您的位置:首页 > 其它

why numbering should start at zero 部分翻译

2018-02-27 19:37 183 查看
去表示一个由自然数组成的序列2, 3, …12, 有以下四种表达方式

a) 2 <= i < 13
b) 1 < i < 12
c) 2 <= i <= 12
d) 1 < i < 13


有理由证明选择一种表达方式比其他方式更好吗?, 是的, 通过观察我们知道 a & b方式有一个优点,就是边界之差等于序列的长度,所以观察的结果说明, 无论采用上述a, b那种表达方式,相邻的两个子序列, 其中一个序列的上边界正好和另一个序列的下边界是相等的,这些观察都是正确的, 但是不能帮助我们去判断该选择a, b 中的哪一个。

存在一个最小的自然数, 不包含下边界,比如b & d,如果强制去表示一个从最小自然数开始的序列, 最小边界就会进入非自然数的范围, 这是非常不雅的, 对于下边界来说的话, a & c 比较符合要求, 现在考虑一个从最小自然数开始的序列, 当序列收缩到空值的时候, 包含上边界也会变得十分不自然, 从上边界的情况来考虑 a & d 会更合适, 结合上面两种情况, 我们可以认为a这种方式更加合适

备注, Xerox PARC公司开发的Mesa语言, 对于上述四种整数表达式都有特殊的标识符, 通过在Mesa上大范围的实验表明, 使用其他三种表达方式的程序很容易出错误, 出于这个经验Mesa的程序员非常不推荐使用其他三种可用的表达方式, 之所以提到这个实验性的证据, 是因为有些人可能觉得没有经过实践得出的结论没有说服性

当处理一个长度为N的序列的时候, 我们想根据下标来区分数组中的元素。 对于起始元素的

下标该如何赋值,这是一个难题。支持a方式的人们赞成从1开始, 下标的范围是
1 <= i < N + 1
。 但是从0开始会是一个更好的取值范围
0 <= i < N
, 一个元素的序号(下标)等于序列中位于它前面元素的个数, 所以我们采用序数0作为开始。

原文: https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: