이번주는 주어진 과제를 따라가는 데에 벅차서 블로그에 손을 거의 대지 못했다. 체력도 바닥이 난 게 느껴지는데(, 컨디션 관리에 좀 더 신경을 써야겠다.
고차함수, 재귀함수 둘 다 개념엔 어렵지 않게 접근했던 것 같지만 실제 사용하는 건 정말...너무 어려웠다.
일단 개념부터 정리해보고자 한다.
함수를 인자로 받거나 또는 함수를 직접 리턴함으로써 작동 하는 함수
이 때, 다른 함수의 인자로 전달되는 함수를 '콜백 함수'라고 부른다.
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 자기 자신 호출(재귀) }
고차함수는 개념을 이해하니 비교적 수월하게 문제에 접근할 수 있었지만, 재귀함수는 정확히 어떤 때에 재귀를 써야 할 지에 대한 감을 잡는 데 오래 걸렸다.
underbar 과제와 recursion 과제를 충분히 복습하여 두 가지 모두 필요할 때 쓸 수 있도록 훈련할 것이다.