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