漫話:為什么程序員喜歡使用0 ≤ i < 10這種左閉右開的形式寫for循環(huán)?
時間:2020-07-09 09:20:22
手機看文章
掃描二維碼
隨時隨地手機看文章
[導讀]當我們想要寫一個循環(huán)體,期望執(zhí)行10次的時候,我們會使用以下方式: for?(int?i=0;?i<10;?i++){ } 可以看到,為了保證循環(huán)10次,我們定義了一個整數變量從0開始,然后循環(huán)10次,結束條件是i < 10。 其實這個本質就是使用了 0 ≤ i < 10 這種表達形式。 之所
for (int i=0; i<10; i++){
}
0 ≤ i < 10
這種表達形式。
關于這個問題,其實還有一位偉大的數學家曾經討論過他的合理性。
這個人就是Dijkstra,他也是離散數學中應用廣泛的最短路徑算法的提出者,并且還提出了銀行家算法。
他在1982年發(fā)表了一篇說明《Why numbering should start at zero》,這里面有部分內容闡述了這個觀點。
他首先提出一個問題,讓我們通過一個條件表達式表示 2,3,4,5,6,7,8,9,10,11,12 這11個數字,其實一般有以下四種寫法:
a) 2 ≤ i < 13
b) 1 < i ≤ 12
c) 2 ≤ i ≤ 12
d) 1 < i < 13
這幾種也是我們在寫for循環(huán)的時候可能會用到的一些表示式,那這四種寫法有沒有好壞之分呢?
答案是有的。
13-2 = 12-1 = 11
; 這樣的寫法可以讓我們快速知道這個表示表達式中一共包含多少個自然數。
≤
還是
<
更合理。
1 < i
作為這個序列的下界的話,這個下界的起始值進入了非自然數的區(qū)域。而使用
2 ≤ i
,那么就可以嚴格的保證這個下界就是一個自然數2 。所以,他認為下界使用
≤
更加合理。
≤
一個用了
<
,那該使用哪種方式更加合適呢?
0<= i <0
就可以表示一個空序列。
<=
就無法表示了,除非用
1 <= i <= 0
,但是這種形式就很不合邏輯。
a) 2 ≤ i < 13
這種表達方式更加合理一些。
我們是一群平均從業(yè)年限5+的通信專業(yè)工程師。
關注我們,帶你了解通信世界的精彩!
你點的每個在看,我都認真當成了喜歡
免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯系我們,謝謝!