CS50 2019 강의를 듣고 내용을 정리한 시리즈 글입니다.
함수를 재귀적으로 사용하는 코드를 작성할 수 있습니다.
- 재귀
함수가 본인 스스로를 호출해서 사용하는 것을 재귀라고 한다.
아래 피라미드 모양을 반복문과 재귀를 사용하여 작성해보자.
#
##
###
####
def loop(n):
for i in range(n):
for j in range(i+1):
print('#', end='')
print('')
loop(4)
중첩 루프를 통해 피라미드를 출력하는 loop
함수를 정의했다.
사실 이 함수에서 바깥 쪽 루프는 안 쪽 루프에서 수행하는 내용을 반복시키는 역할뿐이다.
따라서 바깥 쪽 루프 없이 재귀를 통해 같은 작업을 수행할 수 있다.
def recursion(n):
if n == 0:
return
recursion(n-1)
for i in range(n):
print('#', end='')
print('')
recursion(4)
n으로 높이를 받은 후 n-1로 함수를 먼저 호출한다음 n만큼의 #을 출력한다.
여기서 recursion(n-1)
함수를 반복하다보면 n = 0 이 되므로 아무것도 출력을 하지 않도록 하는 조건문을 추가해줘야 한다.
이렇게 재귀를 사용하면 중첩 루프를 사용하지 않고도 하나의 함수로 동일한 작업을 수행할 수 있다.
반복문을 쓸 수 있는데도 재귀를 사용하는 이유는 무엇일까요?
반복문에 비해 간결한 코드를 통해 가독성을 높일 수 있기 때문이다.