ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 재귀
    FE 2023. 6. 9. 19:29

    재귀 : 원래의 자리로 되돌아가거나 되돌아옴

     

    문제 해결 

    ➡️ 1. 문제를 작게 쪼갠다

    2. 문제가 더 작아지지 않을 때까지, 가장 작은 단위로 문제를 쪼갠다.

    3. 가장 작은 단위의 문제를 풂으로써 전체 문제를 해결한다.

     

    1. 문제를 작게 쪼개기

    arrSum([1, 2, 3, 4, 5]) === 1 + arrSum([2, 3, 4, 5])
    arrSum([2, 3, 4, 5]) === 2 + arrSum([3, 4, 5])
    ...

     

    2. 가장 작은 단위로 쪼개기

    arrSum([3, 4, 5]) === 3 + arrSum([4, 5])
    arrSum([4, 5]) === 4 + arrSum([5])
    arrSum([5]) === 5 + arrSum([])

     

    3. 문제 해결

    arrSum([]) === 0; // <-- 문제가 더는 작아지지 않는 순간
    // 가장 작은 경우의 해결책을 적용합니다.
    arrSum([5]) === 5 + arrSum([]) === 5 + 0 === 5;
    arrSum([4, 5]) === 4 + arrSum([5]) === 4 + 5 === 9;
    arrSum([3, 4, 5]) === 3 + arrSum([4, 5]) === 3 + 9 === 12;
    arrSum([2, 3, 4, 5]) === 2 + arrSum([3, 4, 5]) === 2 + 12 === 14;
    arrSum([1, 2, 3, 4, 5]) === 1 + arrSum([2, 3, 4, 5]) === 1 + 14 === 15;

     

    function arrSum (arr) {
      // 빈 배열을 받았을 때 0을 리턴하는 조건문
      //   --> 가장 작은 문제를 해결하는 코드 & 재귀를 멈추는 코드
      if (arr.length === 0) {
        return 0
      }
    
      // 배열의 첫 요소 + 나머지 요소가 담긴 배열을 받는 arrSum 함수
      //   --> 재귀(자기 자신을 호출)를 통해 문제를 작게 쪼개나가는 코드
    	return arr.shift() + arrSum(arr)
    }

     

    재귀는 언제 사용해야 하는지?

    ➡️ 1. 주어진 문제를 비슷한 구조의 더 작은 문제로 나눌 수 있는 경우 

    2. 중첩된 반복문이 많거나 반복문의 중첩 횟수를 예측하기 어려운 경우

     

    (모든 재귀 함수는 반복문으로 표현할 수 있지만 대부분 재귀를 적용한 코드가 간결하다)

    'FE' 카테고리의 다른 글

    UI / UX  (0) 2023.06.13
    JSON.stringify  (0) 2023.06.12
    Section2 회고  (1) 2023.06.08
    기술면접  (0) 2023.06.08
    my-agora-states-server  (0) 2023.06.07
Designed by Tistory.