서문 : 이전에 데이터 구조 및 알고리즘 클래스에서 수행 한 시험에 대한 WAS입니다.목록 비교; 고유 목록을 반환합니다. - Python
질문 :이 함수를 수정하여 L1 및 L2에있는 항목의 정렬 된 목록을 반환하도록합니다. 예를 들어, 주어진 [1,2,3,4,5], [0,2,3,5,8] 함수는 [2,3,5]를 반환해야합니다. 함수는 어떤 식 으로든 재귀를 사용해야합니다. 문이 목록은 앞으로 각 목록의 각 요소가 서로에 대해 검사 받고 확인하고 밀어 만약 내가 기본 사용
def merge(L1, L2):
if L1 == []:
return L1
elif L2 == []:
return L2
elif L1[0] < L2[0]: #Push L1 forward
return merge(L1[1:], L2)
elif L1[0] > L2[0]: #Push L2 forward
return merge(L1, L2[1:])
elif L1[0] == L2[0]: #If same element, return element
return L1[:1] + merge(L1[1:], L2[1:])
:
def merge(L1, L2):
if L1 == []:
return L2
elif L2 == []:
return L1
elif L1[0] <= L2[0]:
return L1[:1] + merge(L1[1:], L2)
else:
return L2[:1] + merge((L1, L2[1:])
내가 할 수있는 기능을 수정했습니다. 그것은 늦었되었고, 내 앞의 코드는 반환 유지 [2,3,5,8], 내가 원래했기 때문에 :
L1 그것이 L2.I의 나머지를 반환 소진 된
if L1 == []:
return L2
elif L2 == []:
return L1
다음 코드를 다시 입력했다 실수로 넣었습니다.
if L1 == []:
return L1
elif L2 == []:
return L2
그리고 효과가있었습니다. 출력이 나에게 이해가되지 않습니다 [2,3,5]하지만
내 질문
은 다음과 같습니다 할 이유처음 두 지친 목록을 반환 진술은 나에게 출력을 주면 [2 , 3,5]?
빈 목록을 반환하는 것이 재귀 함수에서 벗어나는 이유는 무엇입니까?
마지막으로, 재귀 함수에서 내 목록이 고갈 된 경우 if 문 체인을 벗어날 수 있습니까?
나는 당신의 질문의 마지막 부분을 이해하지 않았다
성명은 또한으로 수정할 수 있습니다. 설명해 주시겠습니까? – thefourtheye
죄송합니다. 마지막 질문은 무시해도 좋습니다. 그것은 반복이다. 처음 두 문이 설명 될 때까지 어떻게 작동하는지 이해하지 못했습니다. 그것들은 나의 기본적인 경우들입니다. – Aimforchris