2017-10-13 70 views
-3

我試圖使用遞歸函數實現插入排序。在python中使用遞歸函數進行插入排序

def insertion_sort(arr): 
    found=False 
    #Base case when list has only one element 
    if len(arr)==1: 
     return arr 
    else: 
    ''' 
     insert nth element in appropriate postion in a sorted list of n-1 elements 
    '''  
     partial_list=insertion_sort(arr[:len(arr)-1] 
     element=arr[-1] 
     for i in range(len(partial_list)): 
      if partial_list[i]>element: 
       index=i 
       found=True 
       break 
     if found: 
      return partial_list.insert(index,element) 
     else: 
      return partial_list.append(element) 

但其示出了一個錯誤:對於i在範圍(LEN(partial_list)): 類型錯誤:類型的對象 'NoneType' 沒有LEN()。 任何人都可以請解釋爲什麼partial_list是一個'None'類型的對象;即使函數insertion_sort正在返回一個列表?

+0

注意:這是''for'循環'else'的完美用例。保存'found'標誌。 –

+0

你正在返回'insert'或'append'的結果'None'。首先追加或插入,然後'返回partial_list' –

回答

0

顯然不總是返回一個列表;至少assert或append中的一個不會。