def process(items,latestItems,startIndex):
if(startIndex!=-1):
latestItems.append(items[startIndex]);
print("방문 결과 : %s"%(latestItems));
for i in range(startIndex+1,len(items)):
process(items,latestItems.copy(),i);
items=["안","녕","하","세","요"];
results=[];
process(items,[],-1);
print(results);
이 방법을 사용하게 되면 해당 리스트에 있는 데이터들을 가능한 모든 조합을 활용하여 순서와 상관 없이 꺼낼 수 있게 됩니다.
출력 결과
방문 결과 : ['안']
방문 결과 : ['안', '녕']
방문 결과 : ['안', '녕', '하']
방문 결과 : ['안', '녕', '하', '세']
방문 결과 : ['안', '녕', '하', '세', '요']
방문 결과 : ['안', '녕', '하', '요']
방문 결과 : ['안', '녕', '세']
방문 결과 : ['안', '녕', '세', '요']
방문 결과 : ['안', '녕', '요']
방문 결과 : ['안', '하']
방문 결과 : ['안', '하', '세']
방문 결과 : ['안', '하', '세', '요']
방문 결과 : ['안', '하', '요']
방문 결과 : ['안', '세']
방문 결과 : ['안', '세', '요']
방문 결과 : ['안', '요']
방문 결과 : ['녕']
방문 결과 : ['녕', '하']
방문 결과 : ['녕', '하', '세']
방문 결과 : ['녕', '하', '세', '요']
방문 결과 : ['녕', '하', '요']
방문 결과 : ['녕', '세']
방문 결과 : ['녕', '세', '요']
방문 결과 : ['녕', '요']
방문 결과 : ['하']
방문 결과 : ['하', '세']
방문 결과 : ['하', '세', '요']
방문 결과 : ['하', '요']
방문 결과 : ['세']
방문 결과 : ['세', '요']
방문 결과 : ['요']
순서까지 포함한 모든 경우의 수
위 예시는 순서는 제외하여 조합을 모두 뽑았습니다만, 순서까지 고려해야 하는 경우는 어떻게 해야할까요? 이번에는 원본 데이터를 하나씩 제거한 리스트를 복사하면서 다음 재귀 함수로 넘겨줄 수 있겟습니다. 결국 하나씩 없애다보면 끝에 도달하는 위치가 있을 것이고, 끝에 도달하면 다시 전 단계로 돌아가서 다음 원소를 찾게 될 것 입니다.
count=0;
def process(items,latestItems,startIndex):
global count;
if(startIndex!=-1):
latestItems.append(items[startIndex]);
print("방문 결과 : %s"%(latestItems));
count+=1;
del items[startIndex];
for i in range(0,len(items)):
process(items.copy(),latestItems.copy(),i);
items=["안","녕","하","세","요"];
process(items,[],-1);
print(count);
출력 결과
방문 결과 : ['안']
방문 결과 : ['안', '녕']
방문 결과 : ['안', '녕', '하']
방문 결과 : ['안', '녕', '하', '세']
방문 결과 : ['안', '녕', '하', '세', '요']
방문 결과 : ['안', '녕', '하', '요']
방문 결과 : ['안', '녕', '하', '요', '세']
방문 결과 : ['안', '녕', '세']
방문 결과 : ['안', '녕', '세', '하']
방문 결과 : ['안', '녕', '세', '하', '요']
방문 결과 : ['안', '녕', '세', '요']
방문 결과 : ['안', '녕', '세', '요', '하']
방문 결과 : ['안', '녕', '요']
방문 결과 : ['안', '녕', '요', '하']
방문 결과 : ['안', '녕', '요', '하', '세']
방문 결과 : ['안', '녕', '요', '세']
방문 결과 : ['안', '녕', '요', '세', '하']
방문 결과 : ['안', '하']
방문 결과 : ['안', '하', '녕']
방문 결과 : ['안', '하', '녕', '세']
방문 결과 : ['안', '하', '녕', '세', '요']
방문 결과 : ['안', '하', '녕', '요']
방문 결과 : ['안', '하', '녕', '요', '세']
방문 결과 : ['안', '하', '세']
방문 결과 : ['안', '하', '세', '녕']
방문 결과 : ['안', '하', '세', '녕', '요']
방문 결과 : ['안', '하', '세', '요']
방문 결과 : ['안', '하', '세', '요', '녕']
방문 결과 : ['안', '하', '요']
방문 결과 : ['안', '하', '요', '녕']
방문 결과 : ['안', '하', '요', '녕', '세']
방문 결과 : ['안', '하', '요', '세']
방문 결과 : ['안', '하', '요', '세', '녕']
방문 결과 : ['안', '세']
방문 결과 : ['안', '세', '녕']
방문 결과 : ['안', '세', '녕', '하']
방문 결과 : ['안', '세', '녕', '하', '요']
방문 결과 : ['안', '세', '녕', '요']
방문 결과 : ['안', '세', '녕', '요', '하']
방문 결과 : ['안', '세', '하']
방문 결과 : ['안', '세', '하', '녕']
방문 결과 : ['안', '세', '하', '녕', '요']
방문 결과 : ['안', '세', '하', '요']
방문 결과 : ['안', '세', '하', '요', '녕']
방문 결과 : ['안', '세', '요']
방문 결과 : ['안', '세', '요', '녕']
방문 결과 : ['안', '세', '요', '녕', '하']
방문 결과 : ['안', '세', '요', '하']
방문 결과 : ['안', '세', '요', '하', '녕']
방문 결과 : ['안', '요']
방문 결과 : ['안', '요', '녕']
방문 결과 : ['안', '요', '녕', '하']
방문 결과 : ['안', '요', '녕', '하', '세']
방문 결과 : ['안', '요', '녕', '세']
방문 결과 : ['안', '요', '녕', '세', '하']
방문 결과 : ['안', '요', '하']
방문 결과 : ['안', '요', '하', '녕']
방문 결과 : ['안', '요', '하', '녕', '세']
방문 결과 : ['안', '요', '하', '세']
방문 결과 : ['안', '요', '하', '세', '녕']
방문 결과 : ['안', '요', '세']
방문 결과 : ['안', '요', '세', '녕']
방문 결과 : ['안', '요', '세', '녕', '하']
방문 결과 : ['안', '요', '세', '하']
방문 결과 : ['안', '요', '세', '하', '녕']
방문 결과 : ['녕']
방문 결과 : ['녕', '안']
방문 결과 : ['녕', '안', '하']
방문 결과 : ['녕', '안', '하', '세']
방문 결과 : ['녕', '안', '하', '세', '요']
방문 결과 : ['녕', '안', '하', '요']
방문 결과 : ['녕', '안', '하', '요', '세']
방문 결과 : ['녕', '안', '세']
방문 결과 : ['녕', '안', '세', '하']
방문 결과 : ['녕', '안', '세', '하', '요']
방문 결과 : ['녕', '안', '세', '요']
방문 결과 : ['녕', '안', '세', '요', '하']
방문 결과 : ['녕', '안', '요']
방문 결과 : ['녕', '안', '요', '하']
방문 결과 : ['녕', '안', '요', '하', '세']
방문 결과 : ['녕', '안', '요', '세']
방문 결과 : ['녕', '안', '요', '세', '하']
방문 결과 : ['녕', '하']
방문 결과 : ['녕', '하', '안']
방문 결과 : ['녕', '하', '안', '세']
방문 결과 : ['녕', '하', '안', '세', '요']
방문 결과 : ['녕', '하', '안', '요']
방문 결과 : ['녕', '하', '안', '요', '세']
방문 결과 : ['녕', '하', '세']
방문 결과 : ['녕', '하', '세', '안']
방문 결과 : ['녕', '하', '세', '안', '요']
방문 결과 : ['녕', '하', '세', '요']
방문 결과 : ['녕', '하', '세', '요', '안']
방문 결과 : ['녕', '하', '요']
방문 결과 : ['녕', '하', '요', '안']
방문 결과 : ['녕', '하', '요', '안', '세']
방문 결과 : ['녕', '하', '요', '세']
방문 결과 : ['녕', '하', '요', '세', '안']
방문 결과 : ['녕', '세']
방문 결과 : ['녕', '세', '안']
방문 결과 : ['녕', '세', '안', '하']
방문 결과 : ['녕', '세', '안', '하', '요']
방문 결과 : ['녕', '세', '안', '요']
방문 결과 : ['녕', '세', '안', '요', '하']
방문 결과 : ['녕', '세', '하']
방문 결과 : ['녕', '세', '하', '안']
방문 결과 : ['녕', '세', '하', '안', '요']
방문 결과 : ['녕', '세', '하', '요']
방문 결과 : ['녕', '세', '하', '요', '안']
방문 결과 : ['녕', '세', '요']
방문 결과 : ['녕', '세', '요', '안']
방문 결과 : ['녕', '세', '요', '안', '하']
방문 결과 : ['녕', '세', '요', '하']
방문 결과 : ['녕', '세', '요', '하', '안']
방문 결과 : ['녕', '요']
방문 결과 : ['녕', '요', '안']
방문 결과 : ['녕', '요', '안', '하']
방문 결과 : ['녕', '요', '안', '하', '세']
방문 결과 : ['녕', '요', '안', '세']
방문 결과 : ['녕', '요', '안', '세', '하']
방문 결과 : ['녕', '요', '하']
방문 결과 : ['녕', '요', '하', '안']
방문 결과 : ['녕', '요', '하', '안', '세']
방문 결과 : ['녕', '요', '하', '세']
방문 결과 : ['녕', '요', '하', '세', '안']
방문 결과 : ['녕', '요', '세']
방문 결과 : ['녕', '요', '세', '안']
방문 결과 : ['녕', '요', '세', '안', '하']
방문 결과 : ['녕', '요', '세', '하']
방문 결과 : ['녕', '요', '세', '하', '안']
방문 결과 : ['하']
방문 결과 : ['하', '안']
방문 결과 : ['하', '안', '녕']
방문 결과 : ['하', '안', '녕', '세']
방문 결과 : ['하', '안', '녕', '세', '요']
방문 결과 : ['하', '안', '녕', '요']
방문 결과 : ['하', '안', '녕', '요', '세']
방문 결과 : ['하', '안', '세']
방문 결과 : ['하', '안', '세', '녕']
방문 결과 : ['하', '안', '세', '녕', '요']
방문 결과 : ['하', '안', '세', '요']
방문 결과 : ['하', '안', '세', '요', '녕']
방문 결과 : ['하', '안', '요']
방문 결과 : ['하', '안', '요', '녕']
방문 결과 : ['하', '안', '요', '녕', '세']
방문 결과 : ['하', '안', '요', '세']
방문 결과 : ['하', '안', '요', '세', '녕']
방문 결과 : ['하', '녕']
방문 결과 : ['하', '녕', '안']
방문 결과 : ['하', '녕', '안', '세']
방문 결과 : ['하', '녕', '안', '세', '요']
방문 결과 : ['하', '녕', '안', '요']
방문 결과 : ['하', '녕', '안', '요', '세']
방문 결과 : ['하', '녕', '세']
방문 결과 : ['하', '녕', '세', '안']
방문 결과 : ['하', '녕', '세', '안', '요']
방문 결과 : ['하', '녕', '세', '요']
방문 결과 : ['하', '녕', '세', '요', '안']
방문 결과 : ['하', '녕', '요']
방문 결과 : ['하', '녕', '요', '안']
방문 결과 : ['하', '녕', '요', '안', '세']
방문 결과 : ['하', '녕', '요', '세']
방문 결과 : ['하', '녕', '요', '세', '안']
방문 결과 : ['하', '세']
방문 결과 : ['하', '세', '안']
방문 결과 : ['하', '세', '안', '녕']
방문 결과 : ['하', '세', '안', '녕', '요']
방문 결과 : ['하', '세', '안', '요']
방문 결과 : ['하', '세', '안', '요', '녕']
방문 결과 : ['하', '세', '녕']
방문 결과 : ['하', '세', '녕', '안']
방문 결과 : ['하', '세', '녕', '안', '요']
방문 결과 : ['하', '세', '녕', '요']
방문 결과 : ['하', '세', '녕', '요', '안']
방문 결과 : ['하', '세', '요']
방문 결과 : ['하', '세', '요', '안']
방문 결과 : ['하', '세', '요', '안', '녕']
방문 결과 : ['하', '세', '요', '녕']
방문 결과 : ['하', '세', '요', '녕', '안']
방문 결과 : ['하', '요']
방문 결과 : ['하', '요', '안']
방문 결과 : ['하', '요', '안', '녕']
방문 결과 : ['하', '요', '안', '녕', '세']
방문 결과 : ['하', '요', '안', '세']
방문 결과 : ['하', '요', '안', '세', '녕']
방문 결과 : ['하', '요', '녕']
방문 결과 : ['하', '요', '녕', '안']
방문 결과 : ['하', '요', '녕', '안', '세']
방문 결과 : ['하', '요', '녕', '세']
방문 결과 : ['하', '요', '녕', '세', '안']
방문 결과 : ['하', '요', '세']
방문 결과 : ['하', '요', '세', '안']
방문 결과 : ['하', '요', '세', '안', '녕']
방문 결과 : ['하', '요', '세', '녕']
방문 결과 : ['하', '요', '세', '녕', '안']
방문 결과 : ['세']
방문 결과 : ['세', '안']
방문 결과 : ['세', '안', '녕']
방문 결과 : ['세', '안', '녕', '하']
방문 결과 : ['세', '안', '녕', '하', '요']
방문 결과 : ['세', '안', '녕', '요']
방문 결과 : ['세', '안', '녕', '요', '하']
방문 결과 : ['세', '안', '하']
방문 결과 : ['세', '안', '하', '녕']
방문 결과 : ['세', '안', '하', '녕', '요']
방문 결과 : ['세', '안', '하', '요']
방문 결과 : ['세', '안', '하', '요', '녕']
방문 결과 : ['세', '안', '요']
방문 결과 : ['세', '안', '요', '녕']
방문 결과 : ['세', '안', '요', '녕', '하']
방문 결과 : ['세', '안', '요', '하']
방문 결과 : ['세', '안', '요', '하', '녕']
방문 결과 : ['세', '녕']
방문 결과 : ['세', '녕', '안']
방문 결과 : ['세', '녕', '안', '하']
방문 결과 : ['세', '녕', '안', '하', '요']
방문 결과 : ['세', '녕', '안', '요']
방문 결과 : ['세', '녕', '안', '요', '하']
방문 결과 : ['세', '녕', '하']
방문 결과 : ['세', '녕', '하', '안']
방문 결과 : ['세', '녕', '하', '안', '요']
방문 결과 : ['세', '녕', '하', '요']
방문 결과 : ['세', '녕', '하', '요', '안']
방문 결과 : ['세', '녕', '요']
방문 결과 : ['세', '녕', '요', '안']
방문 결과 : ['세', '녕', '요', '안', '하']
방문 결과 : ['세', '녕', '요', '하']
방문 결과 : ['세', '녕', '요', '하', '안']
방문 결과 : ['세', '하']
방문 결과 : ['세', '하', '안']
방문 결과 : ['세', '하', '안', '녕']
방문 결과 : ['세', '하', '안', '녕', '요']
방문 결과 : ['세', '하', '안', '요']
방문 결과 : ['세', '하', '안', '요', '녕']
방문 결과 : ['세', '하', '녕']
방문 결과 : ['세', '하', '녕', '안']
방문 결과 : ['세', '하', '녕', '안', '요']
방문 결과 : ['세', '하', '녕', '요']
방문 결과 : ['세', '하', '녕', '요', '안']
방문 결과 : ['세', '하', '요']
방문 결과 : ['세', '하', '요', '안']
방문 결과 : ['세', '하', '요', '안', '녕']
방문 결과 : ['세', '하', '요', '녕']
방문 결과 : ['세', '하', '요', '녕', '안']
방문 결과 : ['세', '요']
방문 결과 : ['세', '요', '안']
방문 결과 : ['세', '요', '안', '녕']
방문 결과 : ['세', '요', '안', '녕', '하']
방문 결과 : ['세', '요', '안', '하']
방문 결과 : ['세', '요', '안', '하', '녕']
방문 결과 : ['세', '요', '녕']
방문 결과 : ['세', '요', '녕', '안']
방문 결과 : ['세', '요', '녕', '안', '하']
방문 결과 : ['세', '요', '녕', '하']
방문 결과 : ['세', '요', '녕', '하', '안']
방문 결과 : ['세', '요', '하']
방문 결과 : ['세', '요', '하', '안']
방문 결과 : ['세', '요', '하', '안', '녕']
방문 결과 : ['세', '요', '하', '녕']
방문 결과 : ['세', '요', '하', '녕', '안']
방문 결과 : ['요']
방문 결과 : ['요', '안']
방문 결과 : ['요', '안', '녕']
방문 결과 : ['요', '안', '녕', '하']
방문 결과 : ['요', '안', '녕', '하', '세']
방문 결과 : ['요', '안', '녕', '세']
방문 결과 : ['요', '안', '녕', '세', '하']
방문 결과 : ['요', '안', '하']
방문 결과 : ['요', '안', '하', '녕']
방문 결과 : ['요', '안', '하', '녕', '세']
방문 결과 : ['요', '안', '하', '세']
방문 결과 : ['요', '안', '하', '세', '녕']
방문 결과 : ['요', '안', '세']
방문 결과 : ['요', '안', '세', '녕']
방문 결과 : ['요', '안', '세', '녕', '하']
방문 결과 : ['요', '안', '세', '하']
방문 결과 : ['요', '안', '세', '하', '녕']
방문 결과 : ['요', '녕']
방문 결과 : ['요', '녕', '안']
방문 결과 : ['요', '녕', '안', '하']
방문 결과 : ['요', '녕', '안', '하', '세']
방문 결과 : ['요', '녕', '안', '세']
방문 결과 : ['요', '녕', '안', '세', '하']
방문 결과 : ['요', '녕', '하']
방문 결과 : ['요', '녕', '하', '안']
방문 결과 : ['요', '녕', '하', '안', '세']
방문 결과 : ['요', '녕', '하', '세']
방문 결과 : ['요', '녕', '하', '세', '안']
방문 결과 : ['요', '녕', '세']
방문 결과 : ['요', '녕', '세', '안']
방문 결과 : ['요', '녕', '세', '안', '하']
방문 결과 : ['요', '녕', '세', '하']
방문 결과 : ['요', '녕', '세', '하', '안']
방문 결과 : ['요', '하']
방문 결과 : ['요', '하', '안']
방문 결과 : ['요', '하', '안', '녕']
방문 결과 : ['요', '하', '안', '녕', '세']
방문 결과 : ['요', '하', '안', '세']
방문 결과 : ['요', '하', '안', '세', '녕']
방문 결과 : ['요', '하', '녕']
방문 결과 : ['요', '하', '녕', '안']
방문 결과 : ['요', '하', '녕', '안', '세']
방문 결과 : ['요', '하', '녕', '세']
방문 결과 : ['요', '하', '녕', '세', '안']
방문 결과 : ['요', '하', '세']
방문 결과 : ['요', '하', '세', '안']
방문 결과 : ['요', '하', '세', '안', '녕']
방문 결과 : ['요', '하', '세', '녕']
방문 결과 : ['요', '하', '세', '녕', '안']
방문 결과 : ['요', '세']
방문 결과 : ['요', '세', '안']
방문 결과 : ['요', '세', '안', '녕']
방문 결과 : ['요', '세', '안', '녕', '하']
방문 결과 : ['요', '세', '안', '하']
방문 결과 : ['요', '세', '안', '하', '녕']
방문 결과 : ['요', '세', '녕']
방문 결과 : ['요', '세', '녕', '안']
방문 결과 : ['요', '세', '녕', '안', '하']
방문 결과 : ['요', '세', '녕', '하']
방문 결과 : ['요', '세', '녕', '하', '안']
방문 결과 : ['요', '세', '하']
방문 결과 : ['요', '세', '하', '안']
방문 결과 : ['요', '세', '하', '안', '녕']
방문 결과 : ['요', '세', '하', '녕']
방문 결과 : ['요', '세', '하', '녕', '안']
325
이번 게시물에서는 재귀 함수를 사용하여 리스트를 모두 조회하는 방법에 대해서 알아보았습니다. 다음에는 재귀 함수가 아닌 반복문 하나로 처리하는 방법을 알아보겠습니다.