Reading 1: Static Checking > Hailstone Sequence
原文地址: https://courses.edx.org/courses/course-v1:MITx+6.005.1x+3T2016/courseware/Readings_Videos/01-Static-Checking/
冰雹序列
作為一個(gè)運(yùn)行的例子,我們將探討冰雹序列,其定義如下。從數(shù)字n開始,如果n是偶數(shù)那么序列的下一個(gè)數(shù)為n的一半,如果n是奇數(shù)那么序列的下一個(gè)數(shù)為3n+1。當(dāng)n為1時(shí)序列結(jié)束。這有些例子:

由于奇數(shù)規(guī)則,序列在到達(dá)1前可能會(huì)一會(huì)兒上升一會(huì)兒下降。人民推測(cè)就像冰雹最終都會(huì)落地樣,從任何n開始的冰雹序列最終都會(huì)到達(dá)1,但這依然是個(gè)開放的問題。為什么這稱為冰雹序列?因?yàn)楸⒃谠浦猩仙舷孪拢钡椒e累到足夠的重量使得它能落地。
計(jì)算冰雹序列
這有一些計(jì)算并打印出冰雹序列的代碼。我們將貼出Java和Python的代碼在一起比較。

一些地方值得我們注意:
-一些基本的人造表達(dá)式無論在Java中還是Python中都非常相似, 例如while和if表現(xiàn)地幾乎一樣。
-Java要求在每行后有分號(hào)。這個(gè)多余的標(biāo)點(diǎn)符號(hào)看似很平淡,但是它也給了你更多的自由去組織你的代碼--你可以為了可讀性將一句代碼分成很多行。
-Java要求每個(gè)if和while的情況判定式需要用圓括號(hào)包圍。這么做并沒有什么好的理由,而且我個(gè)人很煩這點(diǎn)。
-Java要求中括號(hào)包裹代碼塊,而不是用縮進(jìn)。你需要縮進(jìn)代碼,即使Java不強(qiáng)制要求這一點(diǎn)。代碼是一種交流形式,而且你不只是在和編譯器交流,還在和人類交流。人類需要縮進(jìn)。我們還是回來談這一點(diǎn)的。