以下python代码错误
问题描述:
我是python程序的新手。下面的代码与列表有一些错误。以下python代码错误
len = []
def collatz_length(n,count):
++count
if len[n]:
return len[n]
if n == 1:
len[n] = count
elif n & 1:
len[n] = count + collatz_length(3 * n + 1,0)
else:
len[n] = count + collatz_length(n >> 1,0)
return len[n]
print collatz_length(13,0)
我试图找出length.But中给出错误
输出
Traceback (most recent call last):
File "collatz.py", line 21, in <module>
print collatz_length(13,0)
File "collatz.py", line 9, in collatz_length
if len[n]:
IndexError: list index out of range
答
如果你有在它的5件事数组,并尝试访问数组[5],你正在阅读数组的边界之外。我认为那就是发生了什么,但是你的代码也很难理解。如果这不是正在发生的事情,您可能需要添加一些评论或澄清您正在做的事情。它看起来像你有一个空阵列,并试图访问它的位置13,这是没有意义的。
答
这意味着n
超出列表的长度(最初为零)。而不是做len[n]
,你想看看n
是在你的名单:
# Renaming your array to my_array so that it doesn't shadow the len() function,
# It's also better to put it as a parameter, not a global
def collatz_length(n, count, my_array):
if n < len(my_array):
return my_array[n]
# ... all your elses
是什么'++ count'?另外'len'是内建的方法,所以最好避免使用它作为变量名称。 – 2014-09-12 16:04:28