当我们要编写一个循环主体并希望执行10次时,我们将使用以下方法:for& nbsp;(int& nbsp; i = 0;& nbsp; i& lt; 10;& nbsp; i ++ } {},您可以看到,为了确保循环10次,我们定义了一个从0开始的整数变量,然后再循环10次,结束条件是i& lt;实际上,本质是使用表达式0≤i& lt; 10。 10.许多人写这篇文章的主要原因之一是,当他们刚开始学习编程时,老师是以这种方式进行授课的。关于这个问题,实际上有一位伟大的数学家曾经讨论过他的合理性。这个人是Dijkstra,他还是离散数学中广泛使用的最短路径算法的作者,并且他还提出了banker算法。 1982年,他发表了解释“为什么编号应从零开始”,部分解释了这种观点。他首先问了一个问题。让我们通过条件表达式来表达11个数字2,3,4,5,6,7,8,9,10,11,12。实际上,通常有四种书写方式:a)2≤i& lt; 13 b)1& lt; i≤12 c)2≤i≤12 d)1<我& lt; 13这些也是在编写for循环时可能使用的一些表达式。这四种写作风格之间有区别吗?答案是肯定的。我们实际上可以观察到a)和b)都有优势。通过减去上下边界获得的差值等于子序列的长度,即13-2 = 12-1 = 11;这种书写方式使我们可以快速知道。这表明表达式中包含多少个自然数。当然,这不是正确的选择,只是开胃...接下来,Dijkstra从表达式的上下边界讨论了使用≤还是& lt更合理。首先,他认为哪种形式对表达式的下限是合理的。他认为,当我们要表达2-12的自然数时,如果1< lt; i用作该序列的下限,该下限的起始值进入非自然数区域。并且使用2≤i,则可以严格保证下限是自然数2。因此,他认为在下限中使用≤更合理。符合此形式的有a)和c)两个。那么a)和c)之间还有另一个区别,那就是上限使用≤,而其他使用& lt;那么哪种方法更合适? Dijkstra建议,如果要表达一个空序列,可以使用a)形式轻松表达它。例如,0 amp = i& lt 0可以表示空序列。但是,如果上限和下限都使用< =,则不能表示,除非使用1< = i& lt = 0,但是这种形式是非常不合逻辑的。因此,总而言之,他认为a)2≤i& lt; i≤1。 13是一种更合理的表达方式。换句话说,以左关闭和右打开的形式定义表达式是合理且更优雅的!我们是一群专业的通讯工程师,平均经验超过5年。关注我们,向您展示交流世界的兴奋!我看了你订购的一切,我认真地认为这是我的最爱