[CS] 재귀 Day-34

cptkuk91·2021년 12월 14일
0

CS

목록 보기
64/139

재귀를 사용한 코드는 대부분 간결해지고, 이해하기 쉽습니다.

재귀의 핵심은 문제를 해결하기 위해 다양한 방식으로 생각하는 능력을 기르는 것입니다.

재귀는 언제 사용할까?

  • 주어진 문제를 더 작은 문제로 나눌 수 있는 경우
  • 중첩된 반복문이 많거나 반복문의 중첩 횟수를 예측하기 어려운 경우

모든 재귀 함수는 반복문 while, for문을 사용해 표현할 수 있습니다. 재귀를 적용할 수 있는 경우에는 재귀를 사용하는 것이 코드가 더욱 간결해지고 이해하기 쉽습니다.


재귀적 사고 연습

계속 시도하고 연습하는 수 밖에 없습니다.

  • 재귀 함수의 입력값과 출력값 정의하기
    재귀 함수를 통해 풀고자 하는 문제, 도달하고자 하는 목표를 정의하는 데 도움이 됩니다.

  • 문제를 쪼개고 경우의 수를 나누기
    주어진 문제를 어떻게 쪼갤 것인지 고민합니다. 문제를 쪼갤 기준을 정하고, 정한 기준에 따라 문제를 더 큰 경우와 작은 경우로 구분할 수 있는지 확인합니다. 중요한 관점은 입력값이나 문제의 순서와 크기입니다. 주어진 입력값 또는 문제 상황을 크기로 구분할 수 있거나, 순서를 명확하게 정할 수 있다면 문제를 구분하는 데 도움이 됩니다.

  • 단순한 문제 해결하기
    가장 해결하기 쉬운 문제부터 해결합니다. 이를 재귀의 기초라고 부릅니다. 재귀의 기초는 나중에 재귀 함수를 구현할 때, 재귀의 탈출 조건을 구성합니다.

  • 복잡한 문제 해결하기


재귀란?

어떤 함수가 스스로 호출하는 것

ex)

function fac(n) {
	if(n === 1) {
    	return 1;
    }
    return n * fac(n-1);
    // fac(n-1)이 계속해서 스스로를 호출합니다.
    // 예를들어 n=4일 때
    // 4 * fac(3) 
    // 4 * 3 * fac(2) 이런식으로 진행된다.
}

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글