return 함수 와 그냥 일반 return의 차이
아래 두 함수는 단순하게 생각해본다면, if 조건에 맞다면 return True를 하는 함수로 이해할 수 있겠지만,
실행결과는 다르게 나온다.
def dfs1():
if 조건:
return True
for i in range(4):
return dfs1()
def dfs2():
if 조건:
return True
for i in range(4):
if dfs2():
return True
dfs1 함수는 for 문이 있기 때문에 자칫 4번 실행되지 않나? 라는 착각을 할 수 있다. (나다..)
그러나, i = 0일때만 for문을 스캔하고 해당 for문에서 return True가 되지 않는다면 함수가 끝나 return 되기 때문에
그 다음인 i=1, 2, 3 인 경우를 보지 않고 None을 리턴해버린다.
반면 dfs2 함수는 if 조건절로 dfs()의 결과를 체크해주고 있어서, True로 넘어온 경우에만 함수를 return 해준다. 이 경우에는 안정적으로 True가 return 된다.
결론
dfs1 함수는 dfs와 같은 모양을 하고 있어 모든 경우를 탐색해줄 것이라 착각할 수 있지만, 결국 가장 처음으로 들어오는 조건만 체크하고 있는 것이고,
dfs2 함수는 최우선적으로 True가 return 되는 경우를 체크하고 있는 것이다.
'알고리즘 공부 > DS+알고리즘' 카테고리의 다른 글
Hash Table key값은 불변! (0) | 2024.02.22 |
---|---|
비트 연산으로 조합구하기 (0) | 2024.01.17 |
그래프에서 SCC (Strongly Connected Component) 찾기 (3) | 2023.12.07 |
Linked List 구현하기 (0) | 2023.01.16 |
Queue 구현하기 (0) | 2023.01.11 |