成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

漫話:為什么程序員喜歡使用0 ≤ i < 10這種左閉右開的形式寫for循環?

開發 前端
可以看到,為了保證循環10次,我們定義了一個整數變量從0開始,然后循環10次,結束條件是i < 10。其實這個本質就是使用了0 ≤ i < 10這種表達形式。

當我們想要寫一個循環體,期望執行10次的時候,我們會使用以下方式:

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

可以看到,為了保證循環10次,我們定義了一個整數變量從0開始,然后循環10次,結束條件是i < 10。

其實這個本質就是使用了0 ≤ i < 10這種表達形式。

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

關于這個問題,其實還有一位偉大的數學家曾經討論過他的合理性。

這個人就是Dijkstra,他也是離散數學中應用廣泛的最短路徑算法的提出者,并且還提出了銀行家算法。

他在1982年發表了一篇說明《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循環的時候可能會用到的一些表示式,那著四種寫法有沒有好壞之分呢?

答案是有的。

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

當然,這并不是正菜,只是開胃而已…

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

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

他認為,當我們想要表達自然數2-12的時候,如果使用1 < i作為這個序列的下界的話,這個下界的起始值進入了非自然數的區域。而使用2 ≤ i,那么就可以嚴格的保證這個下界就是一個自然數2 。所以,他認為下界使用≤更加合理。

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

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

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

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

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

也就是說,使用左閉右開的形式定義表達式合理也更加優雅!

參考資料:

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

本文轉載自微信公眾號「漫話編程」,可以通過以下二維碼關注。轉載本文請聯系漫話編程公眾號。

 

責任編輯:武曉燕 來源: 漫話編程
相關推薦

2015-11-23 17:27:19

程序員寫代碼

2020-02-25 15:14:13

程序員人生第一份工作睡眠

2023-03-30 09:10:38

Linux打包

2017-03-26 21:42:47

程序命令行開發

2022-03-31 06:41:53

程序員命令行接口代碼

2014-09-24 09:37:05

程序員

2015-11-06 12:00:10

程序員產品經理

2013-12-04 10:23:00

產品經理程序員

2012-08-20 09:16:15

Go語言

2023-03-17 09:55:10

2015-07-20 10:11:08

程序員幸福

2011-04-19 09:59:47

工資程序員

2019-01-23 11:27:18

程序員技能開發者

2014-08-15 11:07:09

程序員

2016-03-15 08:51:12

程序員生活怪異

2012-09-06 10:30:58

2011-12-20 09:01:25

.NET

2013-10-08 09:34:57

編程漫畫編程漫畫

2015-09-24 09:04:36

程序員

2013-10-29 10:24:31

程序員漫畫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品久久久久久久久久久 | 久久99精品久久久久久琪琪 | 91精品国产一区二区三区动漫 | 午夜视频在线 | 日韩一区二区在线视频 | 久久福利电影 | 欧美成人精品在线观看 | 亚洲午夜视频 | 在线观看亚洲精品视频 | 蜜桃传媒一区二区 | 国产精品国产a级 | 亚洲精品视频网站在线观看 | 中文字幕一二三区 | 精品一区二区三区不卡 | 国产亚洲成av人在线观看导航 | 国产激情视频在线观看 | 亚洲午夜精品 | 成人在线网 | 国产视频一区二区三区四区五区 | 91视视频在线观看入口直接观看 | av中文字幕在线 | 99久久精品国产毛片 | 天天爱天天操 | 中文字幕一区二区三区四区 | 在线观看成人小视频 | 国产精品区二区三区日本 | 亚洲欧美中文日韩在线v日本 | 国产精品久久久久久久久婷婷 | 欧美黑人一级爽快片淫片高清 | 午夜成人免费视频 | av电影一区二区 | 免费黄色大片 | 99精品免费久久久久久久久日本 | 欧美黄色免费网站 | 国产一区2区 | 国产精品自拍视频 | 国产高清视频一区 | 亚洲欧美一区二区三区情侣bbw | 国产成人一区在线 | 成人夜晚看av | 狠狠躁躁夜夜躁波多野结依 |