gpt4 book ai didi

python - Collat​​z猜想序列

转载 作者:太空狗 更新时间:2023-10-29 22:16:27 24 4
gpt4 key购买 nike

科拉茨猜想

我正在尝试做的事情:编写一个名为 collat​​z_sequence 的函数,它接受一个起始整数并返回整数序列,包括该数字的起始点。以列表的形式返回序列。创建您的函数,以便在用户输入任何小于 1 的整数时返回空列表 []。

collat​​z 猜想的背景:

取任意自然数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 的数字运行它时,我只得到那个数字,即 collat​​z_sequence(6) 返回 [6]。我需要它来返回整个数字序列,所以 6 应该在列表中返回 6,3,10,5,16,8,4,2,1。

最佳答案

您忘记将 x 值附加到 seq 列表中:

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
seq.append(x) # Added line
return seq

验证:

~/tmp$ python collatz.py 
[6, 3, 10, 5, 16, 8, 4, 2, 1]

关于python - Collat​​z猜想序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13366830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com