재귀 함수에 대해서 공부했다.
이전에 고차함수를 공부할 때 함수를 리턴하는 함수에 대해서 공부했었다.
그 때 함수를 리턴한다는게 잘 감이 오지 않았었다.
새로운 것을 배울 때 기존의 개념이 잘 잡혀 있어야 된다는 것을 요즘 많이 느낀다.
고차함수 개념이 잘 잡혀 있어야 재귀도 이해하기가 수월 할 것 같다.
함수 안에서 다시 자신을 부르는 게 이해하기가 어려웠던 이유는
함수 자신을 다시 부르는 것은 부르기 전에 위에 작성된 코드의 과정을
다시 거친다는 것인데 그것을 염두하고서
어디부터 어떻게 작성해야 불렸을 때 꼬이지 않을 수 있는지
이걸 다 고려해야한다는게 생각보다 어려움이 있었다.
여태 지나온 곳은 다시 돌아간 적이 없던 코드에 다시 위에서부터
내려오면서 작동한다는게 너무 어렵게만 느껴졌다.
무엇보다 어렵게 느껴졌던 이유는 정확한 그림이 머리속에 있지 않았기 때문이다.
잘못 생각한 부분이 호출되면 처음부터 다시 호출하는 변수의 값을 가지고 다시
같은 방법을 사용하는 것인데
같은 과정을 위에서 부터 과정을 거치니 마치 처음부터 다시 시작한다는 오해가
머리속을 복잡하게 만들었다.
그래서 코드를 작성하는데 시도를 하는것이 어려웠다.
다시 시작하는 것이 아니라 호출한 부분에서 멈춰있고 다른 함수를 부른 것과 같이
생각해보니 조금 수월하게 이해할 수 있었다.
실제로는 같은 모양의 다른 방을 간 것인데
마치 같은 방이라고 착각해서 벌어진 오해가 쌓인 것이다.
재귀는 같은 모양의 다른 방에 들어가는 것 같이 이해하면
완전한 비유는 아니라도 조금은 이해하는데 도움이 될 것 같다.
나머지는 많은 활용과 노출로 그 차이를 정확하게 이해해야 할 것 같다.
어렵지만 정말 반복해야 하는 좋은 경우를 볼 때 편리하게 사용될 수 있는
좋은 방법이라는 것을 느낄 때가 있다.
더 많이 사용해봐서 꼭 잘 익혀야겠다.