오늘은 새로운 오류를 발견하였다.
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
s = []
def dfs():
if len(s) == m:
print(" ".join(map(str, s)))
return
for i in range(1, n+1):
s.append(i)
dfs()
s.pop()
dfs()
이전에 중복을 조사하던 부분만 빼주면 문제 없다!
실제 다른 풀이를 봐도 이와 굉장히 유사 or 똑같다.
다만 하나의 문제점이 있었는데, 처음에 저 if 문의 return을 적어주지 않았다. 그러니
RecursionError: maximum recursion depth exceeded while calling a Python object
가 나타났는데, 본 에러의 문제점은 파이썬이 정한 재귀의 깊이보다 더 깊어져서 나타나는 오류라고 한다. print
후 return
을 적어주지 않는다면, 아래의 for
문을 계속 돌게 될텐데, 이 과정에서 생기는 문제점이다.
그러니 함수(코드)를 강제적으로 종료해주기 위해 꼭 적어주어야 한다.