在一般情况下,
[A, B)有很多事情要做,而且我看不出任何理由对于时间间隔都不会如此。
Djikstra撰写了一篇不错的文章,为什么编号应该从零开始,尽管这个名字叫零,但大多数都恰好处理这个问题。
优点的简短摘要:
end - start
等于列表中的项目数- 前一个区间的上限是下一个区间的下限
- 允许索引从0开始的无符号数字[1]
就个人而言,第二点对于许多问题 非常 有用。考虑一个相当标准的递归函数(在伪python中):
def foo(start, end): if end - start == 1: # base case else: middle = start + (end - start) / 2 foo(start, middle) foo(middle, end)
用包含上界的上限编写相同内容会引入很多错误,而一个错误容易产生错误。
[1]与
(A, B]-
相比,这是一个优势-从0开始的间隔比在结尾的间隔更常见
MAX_VAL。注意,这也涉及到另一个问题:使用两个包含边界意味着我们可以表示一个序列,该序列的长度不能用相同的大小表示。



