2014-09-12 107 views
-4

我是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 
+2

是什么'++ count'?另外'len'是内建的方法,所以最好避免使用它作为变量名称。 – 2014-09-12 16:04:28

回答

0

如果你有在它的5件事数组,并尝试访问数组[5],你正在阅读数组的边界之外。我认为那就是发生了什么,但是你的代码也很难理解。如果这不是正在发生的事情,您可能需要添加一些评论或澄清您正在做的事情。它看起来像你有一个空阵列,并试图访问它的位置13,这是没有意义的。

2

这意味着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