30
Code Golf:Collatz猜想
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 受到http://xkcd.com/710/的启发,这里有一个代码高尔夫。 挑战 给定一个大于0的正整数,请打印出该数字的冰雹序列。 冰雹序列 有关更多详细信息,请参见Wikipedia。 如果数字是偶数,则将其除以二。 如果数字是奇数,请将其三倍并加一个。 使用产生的数字重复此操作,直到达到1。(如果在1之后继续执行,则会无限循环进入1 -> 4 -> 2 -> 1...) 有时代码是解释的最佳方式,所以这里有一些维基百科的内容 function collatz(n) show n if n > 1 if n is odd call collatz(3n + 1) else call collatz(n / 2) 这段代码有效,但是我要增加一个额外的挑战。该程序一定不能容易受到堆栈溢出的影响。因此,它必须使用迭代或尾递归。 另外,如果它可以计算大数并且该语言尚未实现,则可以得到加分。(或者,如果您使用固定长度的整数重新实现大数支持) 测试用例 Number: 21 Results: 21 -> 64 -> 32 -> 16 …