日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
漫話:為什么程序員喜歡使用0≤i<10這種左閉右開的形式寫for循環(huán)?

當(dāng)我們想要寫一個(gè)循環(huán)體,期望執(zhí)行10次的時(shí)候,我們會(huì)使用以下方式:

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)陽(yáng)春免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

 
 
 
 
  1. for (int i=0; i<10; i++){ 
  2.  

可以看到,為了保證循環(huán)10次,我們定義了一個(gè)整數(shù)變量從0開始,然后循環(huán)10次,結(jié)束條件是i < 10。

其實(shí)這個(gè)本質(zhì)就是使用了0 ≤ i < 10這種表達(dá)形式。

之所以很多人都這么寫,有一個(gè)最主要的原因就是剛開始學(xué)編程的時(shí)候,老師都是這么教的…

關(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í)一般有以下四種寫法:

  • a) 2 ≤ i < 13
  • b) 1 < i ≤ 12
  • c) 2 ≤ i ≤ 12
  • d) 1 < i < 13

這幾種也是我們?cè)趯慺or循環(huán)的時(shí)候可能會(huì)用到的一些表示式,那著四種寫法有沒(méi)有好壞之分呢?

答案是有的。

我們其實(shí)可以觀察到,a) 和 b)有個(gè)優(yōu)點(diǎn),上下邊界的相減得到的差,正好等于子序列的長(zhǎng)度,即13-2 = 12-1 = 11; 這樣的寫法可以讓我們快速知道這個(gè)表示表達(dá)式中一共包含多少個(gè)自然數(shù)。

當(dāng)然,這并不是正菜,只是開胃而已…

接下來(lái),Dijkstra分別從表達(dá)式的上下界討論了到底使用≤還是<更合理。

首先,他論證了一下表達(dá)式的下界使用哪種形式合理。

他認(rèn)為,當(dāng)我們想要表達(dá)自然數(shù)2-12的時(shí)候,如果使用1 < i作為這個(gè)序列的下界的話,這個(gè)下界的起始值進(jìn)入了非自然數(shù)的區(qū)域。而使用2 ≤ i,那么就可以嚴(yán)格的保證這個(gè)下界就是一個(gè)自然數(shù)2 。所以,他認(rèn)為下界使用≤更加合理。

符合這種形式的就是a) 和 c)兩種。

那么a) 和 c)還有一個(gè)區(qū)別,就是上界一個(gè)用了≤一個(gè)用了<,那該使用哪種方式更加合適呢?

Dijkstra提出,如果想要表達(dá)一個(gè)空序列,使用a) 形式可以很容易的表達(dá),如 0<= i <0就可以表示一個(gè)空序列。

但是如果上界和下界都用<= 就無(wú)法表示了,除非用1 <= i <= 0,但是這種形式就很不合邏輯。

所以,綜上,他認(rèn)為a) 2 ≤ i < 13 這種表達(dá)方式更加合理一些。

也就是說(shuō),使用左閉右開的形式定義表達(dá)式合理也更加優(yōu)雅!

參考資料:

http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html

本文轉(zhuǎn)載自微信公眾號(hào)「漫話編程」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系漫話編程公眾號(hào)。


當(dāng)前文章:漫話:為什么程序員喜歡使用0≤i<10這種左閉右開的形式寫for循環(huán)?
文章分享:http://www.5511xx.com/article/dhjeods.html