아무리봐도 모르겠는 재귀함수. 일단, PASSME 시험을 통과하기 위해 복습을 해보았다.
#. 재귀함수란?
자기자신을 호출하는 함수. 대표적인 문제로 factorial(팩토리얼) 이 있다.
#. 문제 : getElementsByclassName 함수를 재귀함수를 통해 구현하시오.
Hint : document.body, classList, childNodes를 활용하라.
#. 생각의 흐름.
대략 2시간 가량 고민하다가, 결국 모르겠어서 포기하고 다시 예전에 했던 정답지를 펼쳐보았다. 예전에도 못풀어서, 다른 사람 풀이를 참고했는데.. 재귀란..나에게 넘사벽. 똑같은데서 또 막히더라 ^-^.. 지난번에도 이해를 못하셨단 소리겠쬬?
먼저, 그래도 발전이 있었던 점은 classList.contains까지 스스로 생각해낸점. childNodes대신, children을 사용한점. for문으로 돌리고선, 부모자식노드가 있는 경우 단순 for문으로는 풀이가 풀가능했던걸 다시 인지한점이다.
막혔던 부분을 생각해보면, document.body.children[0].children[0] 즉 children을 계속 반복해야 어떤 포맷이든 모든 className을 찾을 수 있는데, 어떻게 해야 반복을 시킬 수 있을지 감을 못잡았다. 길이로 해도 안되고, 재귀는 쓰라는데 어디 써야되는지 모르겠고, 재귀를 써야하는 포인트가 저부분인거 같은데 당췌 어떻게 적용시키지?!!!!?? 란 느낌. 결국 필요한 요소는 다 생각해 냈으나, 그걸 조합해서 함수로 만들지는 못했다. OTL
결과적으로 풀이를 보긴했지만, 이해도가 향상되었다. 두달 뒤에 이거 다시 풀어볼테다. 그때는 꼭 .. 내 생각으로 풀 수 있기를 바란다. 하다못해 코드라도 기억나기를.
#. 정답 코드 리뷰
#. 코드를 console에 순차적으로 실행시켜본다면?
하나하나 실행되면서 착실히 children[0].children[0]으로 탐색해가는걸 알 수 있다. 아니 이거 푸신분들. 천재아니냐고요. 이정도가 평균이면 너무 슬픈데. 개발 할 수 있을까...ㅠ????!
+) test용 html
'공부 > 코드스테이츠' 카테고리의 다른 글
이머시브코스를 마치며 (2) | 2021.01.03 |
---|---|
이머시브 코스 첫주를 보내며 (0) | 2020.05.06 |
객체/배열에 값넣기 (0) | 2020.03.04 |
javascript 숫자 자릿수 구하기 ( 코플릿 리펙토링) (0) | 2020.03.04 |
git bash/ git hub 과제제출하기 (0) | 2020.03.03 |
댓글