Reading 1: Static Checking > Hailstone Sequence
原文地址: https://courses.edx.org/courses/course-v1:MITx+6.005.1x+3T2016/courseware/Readings_Videos/01-Static-Checking/
冰雹序列
作为一个运行的例子,我们将探讨冰雹序列,其定义如下。从数字n开始,如果n是偶数那么序列的下一个数为n的一半,如果n是奇数那么序列的下一个数为3n+1。当n为1时序列结束。这有些例子:
由于奇数规则,序列在到达1前可能会一会儿上升一会儿下降。人民推测就像冰雹最终都会落地样,从任何n开始的冰雹序列最终都会到达1,但这依然是个开放的问题。为什么这称为冰雹序列?因为冰雹在云中上上下下,直到积累到足够的重量使得它能落地。
计算冰雹序列
这有一些计算并打印出冰雹序列的代码。我们将贴出Java和Python的代码在一起比较。
一些地方值得我们注意:
-一些基本的人造表达式无论在Java中还是Python中都非常相似, 例如while和if表现地几乎一样。
-Java要求在每行后有分号。这个多余的标点符号看似很平淡,但是它也给了你更多的自由去组织你的代码--你可以为了可读性将一句代码分成很多行。
-Java要求每个if和while的情况判定式需要用圆括号包围。这么做并没有什么好的理由,而且我个人很烦这点。
-Java要求中括号包裹代码块,而不是用缩进。你需要缩进代码,即使Java不强制要求这一点。代码是一种交流形式,而且你不只是在和编译器交流,还在和人类交流。人类需要缩进。我们还是回来谈这一点的。