[TIL #29] 재귀함수

안떽왕·2023년 4월 26일
0

Today I Learned

목록 보기
29/76

오늘 배웠던 내용은 재귀입니다. 현재 배우고 있는 장고와는 조금 연관성이 떨어질 수 있으나 더 높은 난이도의 알고리즘을 해결하기 위해서는 재귀를 이해하는 것은 필수라고 합니다.

재귀함수

재귀함수란?
스스로를 호출하는 함수를 의미합니다.

재귀함수는 큰 분류로 보면 2가지로 나눌 수 있는데 바로 리턴값이 없는 재귀리턴값이 있는 재귀입니다.

리턴값이 없는 경우

예시는 아래와 같습니다.

def recursion(n):
	if n < 5:
		print(n)
		recursion(n + 1)

recursion(1)

이 함수는 재귀를 이용해서 n이 5보다 작을 경우까지만 n을 출력하게 되어있습니다.

반복문을 사용하지 않아도 함수 스스로 자신을 호출하기에 출력값은 1, 2, 3, 4가 순서대로 출력됩니다.

리턴값이 있는 경우

def recursion(n):
	if n <= 0:
		return 0
	return n + recursion(n-1)

print(recursion(4))

재귀를 이용해 1부터 n까지의 합을 구하는 코드입니다. n이 0보다 작거나 같다면 0을 반환하게 되어 밑에 프린트문에서 4를 입력받으면 recursion(4), recursion(3) ...
recursion(0)까지 순서대로 호출되고 recursion(0)의 경우 리턴값이 0이기 때문에 if문으로 들어가 0을 리턴하게 됩니다.

함수의 작동순서를 보기쉽게 정돈하면

recursion(4) 함수 호출
recursion(4)에서 recursion(3) 함수 호출 (n=3)
recursion(3)에서 recursion(2) 함수 호출 (n=2)
recursion(2)에서 recursion(1) 함수 호출 (n=1)
recursion(1)에서 recursion(0) 함수 호출 (n=0)
recursion(0)에서 0을 반환
recursion(1)에서 1 + 0 = 1을 반환
recursion(2)에서 2 + 1 = 3을 반환
recursion(3)에서 3 + 3 = 6을 반환
recursion(4)에서 4 + 6 = 10을 반환

따라서 결과값은 10이 나오게 됩니다.

profile
이제 막 개발 배우는 코린이

0개의 댓글