재귀함수는 자기 자신을 다시 호출하는 함수를 의미 한다. 자신을 호출하면서 (재귀함수 - 복사본)이 만들어져서 실행되기 때문에 가능하다.
그렇다면 계속 자신을 호출하면 언제 끝내야하나?
그래서 재귀함수에서 필요한게 재귀의 탈출 조건
이다.
예를들어 재귀의 탈출 조건이 0이 탈출 조건이라면 해당 조건이 성립되어 함수가 반환되기 시작한다.
(자기 자신을 호출 했던 반대로 타고 올라간다 생각하면 된다.)
몇가지 예시를 코드로 들어볼 수 있다.
# 1
def func(n):
if n == 1:
return n
elif n % 2 == 0:
return func(int(n / 2))
else:
return func(3 * n + 1)
func(3)
위 코드는 짝수일때 n을2로 나누고 홀수일때 3*n+1을 한다. 그리고 1일때 1을 리턴하는 재귀함수이다.
# 2
def func(data):
if len(data) <= 1:
return data[0]
return data[0] + sum_list(data[1:])
data = random.sample(range(100), 10)
func(data)
랜덤하게 10개의 원소를 가진 리스트가 있다. 리스트의 길이가 1보다 클경우 맨 앞 인덱스와 그 다음 인덱스를 차례대로 더해나아가는 문제이다.
'알고리즘' 카테고리의 다른 글
스택(Stack) (0) | 2021.07.13 |
---|---|
큐(Queue) (0) | 2021.07.12 |
삽입정렬 -스터디- (0) | 2021.06.25 |
선택정렬 -스터디- (0) | 2021.06.21 |
버블정렬 - 스터디- (0) | 2021.06.17 |