2014-09-12 130 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