[자료구조/알고리즘] 재귀 리뷰

소금·2021년 9월 6일
0
post-thumbnail

Chapter. 재귀


🥭 재귀

어떠한 문제를 동일한 구조의 더 작은 문제로 나눌 수 있고,
그 작은 문제를 해결함으로써 전체 문제를 해결하는 방법, recursion

  1. 주어진 문제를 비슷한 구조의 더 작은 문제로 나눌 수 있을 때,
  2. 중첩된 반복문이 많거나 반복문의 중첩 횟수를 알기 어려울 때

주로 사용

🥭 자연수로 이루어진 리스트의 합

  • 일반 코드
function arrSum(arr) {
  let sum = 0;
  for (let i = 0; i < arr.length; i++) {
    sum += arr[i];
  }
  return sum;
}
  • 재귀함수 코드
function arrSum(arr){
  if(arr.length===0)return 0;
  else{
    const head = arr[0];
    const tail = arr.slice(1);
    return head + arrSum(tail);
  }  

🥭 재귀적으로 사고하기

  1. 재귀 함수의 입력값, 출력값 정의
  2. 문제를 쪼개고 경우의 수를 나누기
  3. 더 단순한 문제 해결
  4. 남은 복잡한 문제 해결

Chapter. JSON


🍍 JSON

JavaScript Object Notation, 데이터 교환을 위해 만들어진 객체 형태 포맷

const message = {
  sender: "김코딩",
  receiver: "박해커",
  message: "해커야 오늘 저녁 같이 먹을래?",
  createdAt: "2021-01-12 10:10:10"
}

메시지 객체가 전송 가능하려면, 메시리를 보내는 발산자와 메시지를 받는 수신자가 같은 프로그램을 사용하거나, 문자열처럼 범용적으로 읽을 수 있는 형태여야함

만일 객체에 toString() 메서드 혹은 String() 형변환을 시도하면 =>
[object Object] 결과값 반환
그렇기 때문에 위의 방법 대신에
JSON.stringify : Object => JSON -직렬화
JSON.parse : JSON => Object -역직렬화

🍍 JSON 기본 규칙

키와 문자열 값은 반드시 큰따옴표로 감싸기
키와 값 사이 / 키:값 쌍 사이에 공백이 있으면 안됨

profile
Salty as Salt

0개의 댓글