www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 公眾號精選 > 中興文檔
[導讀]當我們想要寫一個循環(huán)體,期望執(zhí)行10次的時候,我們會使用以下方式: for?(int?i=0;?i<10;?i++){ } 可以看到,為了保證循環(huán)10次,我們定義了一個整數變量從0開始,然后循環(huán)10次,結束條件是i < 10。 其實這個本質就是使用了 0 ≤ i < 10 這種表達形式。 之所

當我們想要寫一個循環(huán)體,期望執(zhí)行10次的時候,我們會使用以下方式:
for (int i=0; i<10; i++){

}
可以看到,為了保證循環(huán)10次,我們定義了一個整數變量從0開始,然后循環(huán)10次,結束條件是i < 10。
其實這個本質就是使用了 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)的時候可能會用到的一些表示式,那這四種寫法有沒有好壞之分呢?

答案是有的。

我們其實可以觀察到,a) 和 b)有個優(yōu)點,上下邊界的相減得到的差,正好等于子序列的長度,即 13-2 = 12-1 = 11 ; 這樣的寫法可以讓我們快速知道這個表示表達式中一共包含多少個自然數。
當然,這并不是正菜,只是開胃而已…
接下來,Dijkstra分別從表達式的上下界討論了到底使用 還是 < 更合理。
首先,他論證了一下表達式的下界使用哪種形式合理。
他認為,當我們想要表達自然數2-12的時候,如果使用 1 < i 作為這個序列的下界的話,這個下界的起始值進入了非自然數的區(qū)域。而使用 2 ≤ i ,那么就可以嚴格的保證這個下界就是一個自然數2 。所以,他認為下界使用 更加合理。
符合這種形式的就是a) 和 c)兩種。
那么a) 和 c)還有一個區(qū)別,就是上界一個用了 一個用了 < ,那該使用哪種方式更加合適呢?
Dijkstra提出,如果想要表達一個空序列,使用a) 形式可以很容易的表達,如 0<= i <0 就可以表示一個空序列。
但是如果上界和下界都用 <= 就無法表示了,除非用 1 <= i <= 0 ,但是這種形式就很不合邏輯。
所以,綜上,他認為 a) 2 ≤ i < 13 這種表達方式更加合理一些。
也就是說,使用左閉右開的形式定義表達式合理也更加優(yōu)雅!




我們是一群平均從業(yè)年限5+的通信專業(yè)工程師。

關注我們,帶你了解通信世界的精彩!

你點的每個在看,我都認真當成了喜歡



免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯系我們,謝謝!

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
關閉
關閉