Skip to main content
 首页 » 编程设计

python之为什么会出现内存错误

2025年05月04日13jpfss

这是我的代码:

i=int(input("enter your number")) 
j=int(input("enter your number")) 
if i>j: #making x always greater than y 
    x=i 
    y=j 
elif i<j: 
    x=j 
    y=i 
else: 
    print("invalid") 
k=y 
cyclelength=[] 
while k<=x: 
    list=[k] 
    while k!=1: 
        if(k%2==0): 
            k=i//2 
        else: 
            k=3*k+1 
        list.append(k) 
    cyclelength.append(len(list)) 
    k+=1 
print(y," ",x," ",max(cyclelength)) 

我得到以下异常:

Traceback (most recent call last): 
  File "C:/Python32/uva100.py", line 21, in <module> 
    list.append(k) 
MemoryError 

请您参考如下方法:

您的意思可能是 k//= 2 而不是 k=i//2

def cyclelength(k): 
    assert k > 0 
    count = 1 
    while k != 1: 
       k = k // 2 if k % 2 == 0 else 3 * k + 1 
       count += 1 
    return count 
 
k_with_max_cyclelength = max(range(y, x+1), key=cyclelength) 

或者两者兼得:

k, max_cyclelength = max(((k, cyclelength(k)) for k in range(y, x+1)), 
                         key=lambda pair: pair[1])