我一直在尝试编写一个Python脚本来制作一个数字通过collatz猜想所需的迭代次数的图表。在此示例中,我仅使用了非常小的范围(仅数字 1),但该脚本似乎一直在运行,即使运行 10 分钟也不会生成图表。下面是代码。有什么建议吗?
import math
import matplotlib.pyplot as plt
def collatz(x):
count = 0
while x != 1:
if x % 2 == 0:
x=x/2
count=count+1
else:
x=(x*3)+1
count=count+1
return count
x_coordinates = []
y_coordinates = []
for i in range(0, 2):
x_coordinates.append(i)
y = collatz(i)
y_coordinates.append(y)
plt.plot(x_coordinates, y_coordinates)
plt.show()
最佳答案
因此您可以使用 y = collatz(0)
开始迭代,因此 x==0
然后输入 while x != 1
> 循环,对吗?
现在 if 子句会发生什么?
if 0 % 2 == 0:
x = 0/2 # == 0
所以 x 永远不会变成 1 并且你会永远运行 while 循环,不是吗?
如果您指的是 Collatz 问题,那么您应该仔细重新阅读该声明:
Does the Collatz sequence from initial value n eventually reach 1, for all n > 0?
关于python - 用于创建 collatz 图的长时间运行的 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23770454/