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

tamagoyakii·2021년 11월 5일
0

TIL

목록 보기
17/31
post-thumbnail

🔰 Achievement Goals 🔰

재귀 함수

  • 재귀의 의미에 대해서 이해하고, 자바스크립트에서 재귀 호출을 할 수 있다.

    재귀는 함수가 함수 본인을 호출하여 다시 사용하는 것을 말한다. 팩토리얼 함수를 예로 들어보자.

    
    function factorial(num) {
        if(num === 1)
        	return num;
        return num * factorial(num - 1);
    }

    num = 5 일때 5!의 값은 5 * 4 * 3 * 2 * 1이다.
    이는 5 * 4!으로 쪼갤 수 있다.
    이는 5 * (4 * 3!)으로 쪼갤 수 있다.
    재귀함수는 이렇게 문제를 작게 쪼개어 풀 때 사용한다.

  • 재귀를 언제 사용해야 하는지 알고 있다.

    주어진 문제를 비슷한 작은 문제로 쪼개어 풀 수 있는 경우, 또 중첩된 반복문이 많은 경우에 사용한다. 다음은 재귀적 사고를 하는 방법, 즉 재귀함수를 만드는 방법이다.

    1. 재귀함수의 입력값과 출력값 정하기.
    2. 문제를 쪼개고 경우의 수 나누기.
    3. 단순한 문제 해결하기.(base case)
    4. 복잡한 문제 해결하기.(recursive case)
    5. 코드 구현하기.
  • 재귀적 사고 연습을 통해 재귀 함수를 base case와 recursive case로 나눠서 작성할 수 있다.

    아래는 재귀함수의 기본 타블렛이다.

    
    function recursive(input1, input2, ...) {
        if(문제를 더 쪼갤 수 없는 경우) {		// base case (재귀 탈출 조건)
        	return 단순한 문제의 해답;
        }
        return 더 작은 문제로 새롭게 정의된 문제;	// recursive case
    }

    base case는 재귀의 기초, 즉 재귀의 탈출 조건이다. recursive case는 복잡한 문제를 풀기 위해 작은 문제로 쪼개어 재귀함수를 호출하는 것이다. 아래는 재귀함수를 이요한 피보나치 수열이다.

    
    function fibonacci(num) {
        if(num === 0 || num === 1)
    	return num
        return fibonacci(num - 1) + fibonacci(num - 2)
    }

0개의 댓글