반복문은 익숙해졌지만 재귀함수는 안 보고 작성하려니 약간 버퍼링이 걸린다.
하지만 백지테스트를 하니 확실히 더 잘 이해된다.
가장 잘 체감되는 재귀함수만의 장점은 확인할 수 있듯이 재귀함수는 반복문에 비해 변수남발이 거의 없다는 것이다. 초장에 들어오는 파라미터를 가지고
요리를 하는 것이다. base case 즉 탈출조건을 고려하여
if문을 작성해주었고 더 잘게 쪼갤 수 있는 recursive영역에선
재귀함수를 호출케 하였고 매 호출마다 매개변수 num을 1증가시켜
결국 base case에 수렴하도록 하였다.
어느정도의 사용은 변수 네이밍의 고충을 덜어줄 듯하다.
물론 재귀에 숙달되었다는 전제하에. ㅋㅋ
안보고 재귀함수를 구현하는 것은 아직 어렵다.
오늘 정민쌤의 레퍼런스 코드를 부분부분 참조하여
코드를 완성하였다.
배운 점은 크게 3가지
1.재귀함수의 호출은 return문 뿐만 아니라
for문과 결합하여 반복문 바디{} 내부에서 호출되어 활용될 수도 있다는 것
2.if(변수 instanceof 타입)을 하더라도
자바 컴파일러가 해당타입임을 알기 위해선
if블록{} 첫 줄에 타입캐스팅이 동반된다는 것
3.해시맵의 경우 put을 통해 저장된 entry의 key들이 순서없이
저장된다는 점, 따라서 put()을 통해 등록한 entry쌍들이 key값에 따른 순차적인 출력이 필요한 상황에선 LinkedHashMap<>();을 쓸 수 있다는 것
4. replaceAll()메소드에서 알 수 있듯 똑같은 메소드를 연달아 붙여 호출할 수도 있다는 것
이상 ======================================
하노이의 탑 문제봤는데, 매우 난해하다.. 주말동안 풀어봐야겠다.