본문 바로가기
알고리즘 공부/DS+알고리즘

return Boolean과 return Function의 차이

by 지금갑시다 2024. 1. 30.

 

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 되는 경우를 체크하고 있는 것이다.