본문 바로가기
반응형

재귀함수3

메모이제이션 Memoization 메모이제이션이란 프로그래밍을 할 때 반복되는 결과를 메모리에 저장해서 다음에 같은 결과가 나올 때 빨리 실행하는 코딩 기법을 말한다. 클로저를 사용해서 유지되는 저장공간을 이용해 함수를 반복적으로 수행할 때 함수 내부의 실행횟수를 줄일 수 있다. 메모이제이션을 사용해서 팩토리얼 함수 구현 let factorial = (function() { let save = {}; let fact = function(number) { if (number > 0) { let saved = save[number - 1] || fact(number - 1); let result = number * saved; save[number] = result; console.log(saved, result); return result.. 2020. 10. 14.
클로저를 이용한 피보나치 수열을 리턴하는 메서드 출력할 때 마다 피보나치수열을 차례로 리턴해야 함 클로저의 정의나 특징은 알고 있었으나, 문제에서 파라미터가 정의되지 않았다는 점과 function을 리턴해야 한다는 점이 초기 접근자체를 어렵게 했다. 내가 여태 배운것 중 가장 이해도가 낮다고 생각하는 고차함수의 개념을 이용해야하기 때문에 더 힘들었던 것 같다. 실마리는 검색에서 찾았다. 클로저를 이용해서 함수를 리턴하며 실행하는 방법과 클로저 함수(내부함수)를 이용할 때 내부함수엔 얼마든 파라미터를 써도 된다는 점을 알게되자 조금씩 생각의 가닥이 잡히는 느낌이었다. 우선 몇번 풀어봤던 피보나치 수열의 값을 리턴하는 클로저 함수를 작성했다. let fibo = function(n){ if(n 2020. 10. 12.
TIL 1007 _.sortBy(arr.sort()) _.flatten(재귀함수) 3일걸린 문제 계속 이해가 안가서 3일 밤낮으로 고민했던 문제. 항상 문제를 제대로 이해했다고 생각하고 푸는순간 맹점이 생긴다. 잘했다고 생각했는데 풀리지 않는것은 맹점을 놓치고 있어서다. 이것을 꼭 반드시 항상 주의하자. _.sortBy ( arr.sort( ) ) 계속 sort( function(a, b){...} ) 으로 풀려고 시도했는데, 인자로 전달해주는 function 에서 어떤 순서로 a, b가 들어가는지어떤 알고리즘으로 정렬되는지 이해하지 못해서 계속 골머리를 앓았다. 검색해보다 누군가가 댓글로 설명해 둔것이 있어 참고하고 완전한 이해는 힘들다고 판단. 흐름만 이해하기로 했다. 아래는 내가 이 문제를 며칠동안 고민하게 만든 이유 1. 인자로 주어지는 arr이 const로 선언되어 값이 변경될 수 없다. .. 2020. 10. 7.
반응형