
자기 자신을 호출하는 함수
코드가 짧아져 고치기 쉽지만 알아보기 어렵다
지역변수, 매개변수, 리턴값 모두를 process stack에 저장하여 메모리를 더 많이 집어먹는다.
메서드 호출, 종료이후 복귀를 위한 컨텍스트 스위칭 비용이 발생한다
한마디로 스텍메모리가 힘들다~~
재귀함수를 배우며 오늘 풀어본 문제는 다음과 같다
재귀도 어떻게 보면 반복문이니까 1을 리턴한다면 +1이 증가한다는 당연한 공식을 깨달았다
재귀 증감과 맞지 않는 앞 부분을 if를 사용해 건너 뛰어버리는 것이 답이었다
경험이란게 무서운게 한번 쉬운 방법을 알고나니 어려운 방법이 좀처럼 생각나지 않는다
배열의 길이 값을 구하는데 arr.length를 사용하지 말아야 했다
12번 배열의 순서를 뒤집는 문제에 개박살났다, 처음과 끝을 교환하면 되려나 하고
대충 arr[n] = arr[arr.lenght-n] 이런 식으로 시작을 했는데 리턴값으로 n을 반복할 수 없고 함수 내에 n을 선언하면 반복시마다 초기화 되버리니 증감이 불가능 했다. 결국 답은 분해해 재조합한 배열값을 재귀해 재조합을 반복하는 방법이였다. 재귀함수의 끝 리턴 값이 꼭 답이 될 필요가 없다는 걸, if문으로 중간에 빠져나가 리턴값을 줄 수도 있었다
🍋🍋🍋
재귀함수에 대한 첫 감상은 '이게뭐야' 였다
그럴리 없겠지만 내 눈에는 마치 누군가를 힘들게 하기위해 만들어진 공식같은 녀석처럼 보였다.
그나마 머리박고 씨름한 결과 그나마 정리한다면 분해하고 또 분해해서
base case에 대한 탈출로를 잡고 '리턴 값'을 위해 '증감 값'을 찾고
'반복할 것'을 찾는다 였다. 어쨋든 익숙해지기 위해 노오력이 많이 필요해 보인다.
전날 저녁부터 어깨에서 시작한 결림이 너무 심해져서 일상생활에 까지 지장을 주고있다.
견갑골 안쪽 상부에서 시작된 통증이 신경을 타고 목까지 뻗쳐서
지금은 목을 반에 반이라도 돌릴려 치면 순간적으로 누가 망치로 때리는 듯한 통증이 온다.
심할 때는 물 마실 떄 조차 아팠다.
그나마 찜질이고 파스고 할 수 있는 방법은 다 썼더니 팔 올릴정도 까지는 호전됬는데
늦기전에 내일 병원에 다녀와야 될 것 같다