Game AI & Unity/concepts

[재귀호출 1] 무한 호출 막기

bay07 2024. 2. 23. 01:16

/

▷ 재귀호출

필요한 함수가 자신과 같은 경우, 자기 자신을 다시 호출하는 것을 말한다.

일반 함수를 여러번 작성하는 것보다, 코드를 간결하게 작성할 수 있다. ex) factorial

 

재귀호출을 사용할 때 주의해야할 점이 있는데, 바로 무한루프가 발생할 수 있다는 것이다. 

그 과정은 아래와 같다. 

# 자기 자신을 호출
# 문제 (무한루프) 

def abc():
    abc()
abc()

 

이러한 재귀함수를 잘 사용하기 위해서는, 먼저 종료조건을 잘 설정하여 무한루프를 막는 것이 필요하다

아래에서는 재귀함수를 돌 때마다 level의 값을 1 증가시켰고,

level 이 2가 되었을 때, 함수를 종료시키도록 하였다. 

# 무한루프 막기 

def abc(level):
    if level == 2:
        return
    print(level)
    abc(level+1)
abc(0)

'''
abc(level += 1) 을 해버리면 
다음 함수의 매개변수는 1 + 1 인 값이 된다. 
level + 1 과 level += 1은 다르다