완전탐색의 경우 정해진 원소의 개수만큼 반복문이 중첩되게 된다. 따라서 이는 재귀를 이용하여 코드를 작성하면 좀 더 보기 편해질 수 있다.
n, r = map(int, input().split())
def solution():
picked = []
def recur():
# basecase
temp = ''
if len(picked) == r:
for j in range(r):
temp += chr(picked[j]+ord('a'))
print(temp)
return
for i in range(n):
if i not in picked:
# 1 pick
picked.append(i)
#재귀
recur()
picked.pop()
recur()
solution()
위의 코드는 n개의 원소들 중에서 r개의 원소를 뽑는 모든 경우의 수를 구하는 코드이다.
위와 같이 n=4, r=2로 입력한 경우 아래와 같은 결과를 출력한다.