TIL 41일차 - [자료구조/알고리즘] 재귀

Yoon Kyung Park·2023년 6월 8일
0

TIL

목록 보기
41/75

재귀 들어가기에 앞서 check 해보기
☑️ Section1에서 학습한 JavaScript 기초 문법을 활용할 수 있어야 한다.
☑️ 조건문에 대한 기초 개념
☑️ 반복문에 대한 기초 개념


  • 재귀의 의미에 대해서 이해한다.

    재귀는 자기 자신을 호출하는 함수를 의미한다.
    마치 고무줄을 잡아 당겼다가 돌아오는 것과 유사하다.

  • JavaScript에서 재귀 호출을 할 수 있다.

    o

  • 재귀를 언제 사용해야 하는지 이해한다.

    o
    재귀는 보통 주어진 문제를 비슷한 구조의 더 작은 문제로 쪼갤 수 있는 경우,
    중첩된 반복문이 많거나 반목문의 중첩 횟수를 예측하기 어려운 경우,
    반복문으로 작성된 코드를 더욱 간결하고 이해하기 쉽게 작성하고 싶은 경우
    사용하는 것이 좋다.

  • 재귀로 문제를 해결하는 방법을 이해한다.

    o
    문제를 좀 더 작게 쪼갠다. --> 더 이상 쪼개지지 않는 단위까지 쪼갠다. -->
    더 이상 쪼개지지 않는 가장 작은 단위에서 문제를 해결한다.
    이때, 더 이상 쪼개지지 않는 가장 작은 단위는 base case에 해당하고,
    그 외에 문제를 작게 쪼개왔던 조건들은 recursive case에 해당한다.

  • 재귀의 기초(base case)와 탈출 조건에 대해 이해한다.

    o
    재귀는 자기 자신을 호출하는 함수이기 때문에, stack에 다 찰 때까지 계속 호출을 한다. 이것을 방지하기 위해 함수가 종료되도록 탈출 조건을 설치해야 한다.
    이를 더 이상 쪼개지지 않는 가장 작은 단위를 의미하는 재귀의 기초(base case)라고 한다. 문제를 쪼개고 쪼개다가 더 이상 쪼개지지 않는 순간까지 가면, 그때는 해당 조건에 맞는 값을 리턴하면서 함수가 종료된다.

    이때 가장 작은 단위까지 쪼개 오면서 남아 있는 복잡한 경우들은 recursive case(반복되는 경우)에 해당한다. 이 과정들은 input만 달라지지 전체 조건의 틀은 같으며, 똑같은 과정을 반복하고 있다.

  • 재귀 함수를 base case와 recursive case로 나눠서 작성할 수 있다.

    o
    더 이상 쪼개지지 않는 가장 작은 단위를 재귀 함수가 탈출할 수 있는 base case로 정하고, 나머지 반복되는 과정들은 recursive case로 정하여 문제를 해결할 수 있다.


재귀 코플릿

2번, 8번 , 13번, 14번, 15번


소감

🔡➡️💻➡️🤓👍

영어를 배우다 보면, 재귀대명사를 배운다.
재귀대명사는 목적어로 쓰여 주어 자신을 나타내는 것을 재귀 용법이라고 한다.
이는 영어 문법에서 실용성과 경제성을 매우 따지기 때문이다.

이처럼 재귀는 반복을 싫어하기 때문에 반복되는 부분을 반복해서 쓰기 보다는
다른 어떠한 말로 대신하여 그 말을 사용하는 것이다.

이에 대표적인 예시가 바로 재귀대명사 혹은 대명사 등이 그러한 경우다.

영어권에서 발달한 컴퓨터 언어도 이와 같은 언어 규칙이 어느 정도
반영되어 있는 듯하다.

재귀 함수도 이와 마찬가지로 자기 자신을 호출하는 함수였다.
그렇기에 자기 자신을 호출하고 리턴하므로 이 함수를 벗어날 탈출 장치가 필요하다.
base case에서 함수가 종료되어 리턴이 되면 함수는 작게 쪼개져 온 과정들을 돌아가며
함수를 종료시키면서 값을 리턴하여 해당 함수 내에 작성된 조건대로 계산하여 값을 반환한다.

재귀 함수를 이해하는 과정이 마치 영어 문법과 비슷하여
나름 재밌는 과정이었다.

재귀 관련된 코딩 테스트는 쉽지는 않았지만,
base case와 recursive case를 나눠가며 문제를
하나 하나 이해해가며 하느라 시간은 걸렸지만
최근 학습 중에 가장 재밌게 집중하여 학습한 유닛이었다!! 😄👍

profile
developerpyk

0개의 댓글