메모이제이션

모모·2021년 12월 20일
0

개념 정리

목록 보기
2/3

개념

함수 호출 결과를 저장하여 동일한 입력에 대해 어플리케이션의 속도를 높이는 최적화 기법

function fibonacci(n, memo) {
  memo = memo || {}
  // 캐시가 저장되는 공간. 함수가 호출되었을 때 인자로 memo를 받았는지 확인
  	// 받았다면 -> 사용을 위해 초기화
  	// 안받았다면 -> 빈 객체 생성
  
  if (memo[n]) {
    return memo[n]
  }
  // 현재 인덱스 n에 대해 캐시에 저장된 값이 있는지 확인하고, 있으면 값 반환
  
  if (n <= 1) {
    return 1
  }
  // 탈출 조건 설정
  
  return memo[n] = fibonacci(n-1, memo) + fibonacci(n-2, memo)
  // 함수를 재귀 호출할 때 캐시에 저장된 값을 각 함수에 전달
  // 즉, 이전에 평가되어 저장된 값은 다시 계산하지 않고 memo에서 값을 검색
}

참고

Understanding Memoization In JavaScript
https://www.digitalocean.com/community/tutorials/understanding-memoization-in-javascript#case-study-the-fibonacci-sequence

0개의 댓글