재귀

GYUBIN ·2022년 5월 3일
0

CS50 2019

목록 보기
7/12

CS50 2019 강의를 듣고 내용을 정리한 시리즈 글입니다.


학습목표

함수를 재귀적으로 사용하는 코드를 작성할 수 있습니다.


핵심 단어

  • 재귀

강의 내용

1. 재귀

함수가 본인 스스로를 호출해서 사용하는 것을 재귀라고 한다.

아래 피라미드 모양을 반복문과 재귀를 사용하여 작성해보자.

#
##
###
####
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 이 되므로 아무것도 출력을 하지 않도록 하는 조건문을 추가해줘야 한다.

이렇게 재귀를 사용하면 중첩 루프를 사용하지 않고도 하나의 함수로 동일한 작업을 수행할 수 있다.


생각해보기

반복문을 쓸 수 있는데도 재귀를 사용하는 이유는 무엇일까요?


반복문에 비해 간결한 코드를 통해 가독성을 높일 수 있기 때문이다.

0개의 댓글