2013-11-09 2 views
0

임의의 값 목록을 가져 와서 연결된 목록으로 만들려면 어떻게 재귀를 사용합니까? 각 값은 노드입니다. 지금 현재, 나는 다음을 구현하려고했습니다 ...재귀를 사용하여 목록에서 연결된 목록을 만듭니다.

def pyListToMyList(pylst): 
     lists = mkMyList() 
     lists.head = pyListToMyListRec(pylst) 
     return lists 

def pyListToMyList(pylst):    
     if pylst: 
       return mkEmptyNode() 
     else: 
       return mkNode(pylst[0], pyLstToMyListRec(pylst[1:])) 

문제는 인덱스가 범위를 벗어나 없다는 오류를 반환 else 문이다.

+0

내가 원래의 게시물을 수정할 수 있습니다 – user2933041

답변

1
def pyListToMyList(pylst):    
    if not pylst: 
     return mkEmptyNode() 
    else: 
     return mkNode(pylst[0], pyLstToMyListRec(pylst[1:])) 

편집 : 모든 목록 복사 때문에 O (n^2)이긴하지만.

내가 할 것

def pyListToMyList(pylst, i=0): 
    if i > len(pylst): 
     return mkEmptyNode() 
    else: 
     return mkNode(pylst[i], pyLstToMyListRec(pylst, i+1)) 

또는보다 효율적이고 (이 재귀를 사용하지 않습니다하지만) 스택 오버 플로우 가능성이 적습니다 :

def pyListToMyList(pylst): 
    lst = mkEmptyNode() 
    for x in reversed(pylist): 
     lst = mkNode(x, lst) 
    return lst 
관련 문제