200822 TWIL(고차함수, 재귀함수)

Rameau·2020년 8월 22일
0

이번주는 주어진 과제를 따라가는 데에 벅차서 블로그에 손을 거의 대지 못했다. 체력도 바닥이 난 게 느껴지는데(, 컨디션 관리에 좀 더 신경을 써야겠다.
고차함수, 재귀함수 둘 다 개념엔 어렵지 않게 접근했던 것 같지만 실제 사용하는 건 정말...너무 어려웠다.
일단 개념부터 정리해보고자 한다.

고차함수란?

함수를 인자로 받거나 또는 함수를 직접 리턴함으로써 작동 하는 함수
이 때, 다른 함수의 인자로 전달되는 함수를 '콜백 함수'라고 부른다.
ex) 함수를 리턴하는 경우 : 'Hello'를 리턴하는 함수를 리턴하고 싶을 때

function returnFunc () {
  return function () {
    return 'Hello';
  }
}

ex) 함수를 인자로 전달받는 경우 :

function plusTwo(num) {
  return num + 2
}
function returnPlusTwo(plusTwo, num){
  return plusTwo(num);
}
//이 때 plusTwo는 콜백함수이다.

고차함수 메소드 정리

  • foreach : 주어진 함수를 각 배열 요소에 대해 실행 (for문 대체 가능)
  • find : 주어진 함수를 만족하는 첫번째 값을 리턴
  • filter : 주어진 함수의 테스트를 통과하는 모든 값을 모아 리턴(필터링)
  • map : 주어진 함수를 배열의 각 요소에 실행한 값을 모은 새로운 배열 리턴(배열을 리턴한다는 점에서 foreach와 차이가 있음)
  • reduce : 주어진 함수를 실행하여 하나의 누적된 값을 반환함
  • sort : 배열의 요소를 주어진 함수에 따라 정렬하여 리턴
  • some : 배열 안의 요소 중 하나라도 주어진 함수의 테스트에 통과한다면 true 리턴
  • every : 배열 안의 모든 요소가 주어진 함수의 테스트에 통과할 때 true 리턴

재귀함수란?

동일한 구조의 더 작은 문제를 해결함으로써 문제를 해결하는 방법을 '재귀'라고 한다.

재귀함수를 간단하게 정의하면 자기 자신을 호출하는 함수이다.
다음과 같은 템플릿에서 실행된다.

function recursive(input1, input2, ...) {
  // base case(기반 조건)
  if (이런 일이 일어난다면) {
    return 성공!;
  }
  // recursive Case
  // 그렇지 않은 경우
  return 자기 자신 호출(재귀)
 }

Note

고차함수는 개념을 이해하니 비교적 수월하게 문제에 접근할 수 있었지만, 재귀함수는 정확히 어떤 때에 재귀를 써야 할 지에 대한 감을 잡는 데 오래 걸렸다.
underbar 과제와 recursion 과제를 충분히 복습하여 두 가지 모두 필요할 때 쓸 수 있도록 훈련할 것이다.

profile
개발하고 싶다!

0개의 댓글