재귀

김나율·2022년 10월 20일
0

section3

목록 보기
1/5

◎재귀함수

: 자기자신을 호출하는 함수

  • 재귀로 문제 해결하기
    ex)[1,2,3] 배열 안 숫자 더하기

    1. 문제를 작게 쪼개기
      sum([1,2,3]) / 1+sum([2,3])….
    2. 가장 작은 단위로 쪼개기
      1+sum([2,3]) / 2+sum([3]) / 3+sum([])
    3. 문제해결하기
      return arr.shift()+sum(arr)
  • 재귀를 사용하기 적합한 상황

    1. 주어진 문제를 비슷한 구조의 더 작은 문제로 나눌 수 있는 경우
    2. 중첩된 반복문이 많거나 반복문의 중첩 횟수를 예측하기 어려운 경우
  • 재귀적으로 사고하기

    1. 재귀함수의 입력값과 출력값 정의하기
    2. 문제를 쪼개고 경우의 수를 나누기
      -일반적으로 문제를 더이상 쪼갤수 없는 경우와 그렇지 않은경우로 나눔
    3. 단순한 문제 해결하기
      탈출조건 => 더이상 쪼갤 수 없는 경우
    4. 복잡한 문제 해결하기
    5. 코드 구현하기
    function recrusive(n){
    //base case: 문제를 더이상 쪼갤 수 없을 경우
    if(문제를 더이상 쪼갤 수 없을 경우){
      return 단순한 문제의 해답;
    }
    
    //recrusive case: 그렇지 않은 경우
    return 더작은 문제로 새롭게 정의된 문제
    }

◎JSON(JavaScript Object Notation)

: 서로 다른 프로그램 사이에서 데이터 교환을 위해 만들어진 객체 형태의 포맷

  • 전송가능한 조건
    -수신자와 발신자가 같은 프로그램을 사용한다.
    -또는, 문자열처럼 볌용적으로 읽을 수 있어야한다.

    const message = {
     sender: "김나",
     receiver: "박나"
    }

    객체 타입 변환을 이용해 String으로 변환할 경우 객체 내용을 포함하지 않는다.

  • 이를 해결하는 방법

    1. JSON.stringify : message 객체를 JSON으로 변환하는 메서드
      let transferableMessage = JSON.stringify(message)
      console.log(transferableMessage)  //`{"sender":"김나","receiver":"박나"}`
      console.log(typeof(transferableMessage))  // `string`
      => stringify하는 과정을 직렬화라고 한다.
      => JSON으로 변환된 객체의 타입은 문자열이다.
    2. JSON.parse : 직렬화된 JSON를 다시 객체의 형태로 변환
      let two= `{"sender":"김나","receiver":"박나"}`
      let obj = JSON.parse(two)
      console.log(obj) 
      /*{
      sender: "김나",
      receiver: "박나"
      }*/
      console.log(typeof(obj))  // `object`
      => JSON.parse하는 과정을 역직렬화한다고 한다.

0개의 댓글