柯拉兹猜想
我正在尝试做的事情:编写一个名为 collatz_sequence 的函数,该函数接受一个起始整数并返回该数字的整数序列,包括起始点。以列表的形式返回序列。创建您的函数,以便如果用户输入任何小于 1 的整数,它会返回空列表 []。
考拉兹猜想的背景:
取任意自然数n。如果 n 为偶数,则除以 2 得到 n / 2,如果 n 为奇数,则乘以 3 并加 1 得到 3n + 1。无限重复该过程。猜想是,无论你从哪个数字开始,你最终总会达到 1。
到目前为止我所拥有的:
def collatz_sequence(x):
seq = [x]
if x < 1:
return []
while x > 1:
if x % 2 == 0:
x= x/2
else:
x= 3*x+1
return seq
当我用小于 1 的数字运行它时,我得到了正确的空集。但是当我使用大于 1 的数字运行它时,我只会得到那个数字,即 collatz_sequence(6) 返回 [6]。我需要这个来返回整个数字序列,所以 6 应该在列表中返回 6,3,10,5,16,8,4,2,1。