您可以将值存储在列表中(result
如下所示):
n = 1000000
result = []
for x in range(1, 3000001):
if n % 2 == 0:
x = n / 2
else:
x = 3 * n + 1
n = x
result.append(n)
if n == 1:
break
print(result)
# [500000, 250000, 125000,... 8, 4, 2, 1]
print(len(result))
# 152
将项目存储在列表中使您有机会稍后在代码中进一步处理这些项目。您可以打印它们、计算它们、对它们进行更多计算等。
但是,它确实需要内存来存储它们,所以如果您不需要同时将它们全部保留在内存中,Ashwini Chaudhary 的解决方案会更好。
这是一种类似于 Ashwini 的方法,不同之处在于它将打印与计算分开。这总是一件好事,因为人们经常希望执行计算而不是同时显示结果。
n = 1000001
def myseq(n):
for x in range(1, 3000001):
if n % 2 == 0:
x = n / 2
else:
x = 3 * n + 1
n = x
yield n
if n == 1:
return
for n, item in enumerate(myseq(n), 1):
print(n, end=' ')
# 500000 250000 125000... 8 4 2 1
print('\n{}'.format(n))