2016-09-16 402 views
1

對於我的計算機科學課,我們正在學習遞歸,並且我很難理解它。我的任務之一是創建一個算法,返回與L完全相同的另一個列表,但除去e的所有元素。不過,我目前拿出一個接收類型錯誤:只能連接列表(不是「NoneType」)列表

TypeError: can only concatenate list (not "NoneType") to list

這是什麼意思,我怎麼能解決這個問題

def removeAll(e, L): 
    '''returns another list that is identical to L except all elements of e are removed''' 
    if L==[]: 
     return [] 
    if L[0]!=e: 
     return [L[0]]+removeAll(e,L[1:]) 

Code

+3

當'L'既不是一個空表也沒有不等於'e'第一要素,這個功能並沒有指定返回值,因此收益'None'。 – TigerhawkT3

+0

處理了「L [0] == e」的情況在哪裏? – shahkalpesh

回答

1

你檢查L是一個空的列表,和你正在檢查L的第一個元素是否不等於e(因此也是您的結果的一部分),但只要元素等於e,函數就不會返回任何內容,這意味着它返回默認值None。添加妥善處理該情況與else

else: 
    return removeAll(e, L[1:]) 
相關問題