我试图找到Collatz猜想序列的长度,但我的答案是错误的。。。。我的代码出了什么问题?我在网上找不到相关的解决方案。。。
a=int(input())
mylist=[]
while a != 1:
if a%2 == 0:
a = a/2
else:
a = a*3 + 1
mylist.append(a)
print(len(mylist))
输入:6
输出:2
如果我输入6,答案应该是9。我正试图把它们放进一个列表中,然后找出列表的长度。
缩进关闭:
a=int(input())
6
mylist=[]
while a != 1:
if a%2 == 0:
a = a/2
else:
a = a*3 + 1
mylist.append(a) # HERE
print(len(mylist))
Python使用缩进来区分代码块。由于缩进错误,mylist.append(a)
将只在else
分支中运行,并且不会添加任何偶数。您可以打印mylist
并注意到这一点。
此外,最好使用//
(整数除法(而不是/
(浮点除法(来保持a
为整数。