함수의 재귀적 호출의 이해(1)
10년 전에는 C언어가 어렵다는 생각이 지금보다 팽배했다. 그때는 C언어 하나만 잘하기도 어려웠다. 파스칼을 공부하다가 C로 넘어오는 시점의 현상일 것임.
당시 국내에서 나온 책들을 보면 초보자들을 위한 C언어 기본서가 아니라, 어려운 부분들을 생략한 책들이 많았음.
그래서 그때는 C언어 문법때는 재귀를 공부하지 않고, 자료구조에서 와서나 공부하곤 했다…
함수의 재귀적 호출은 하노이타워라는 주제로 핵심을 공부하면 용이하다.
앞으로 비선형자료구조 등을 다룰때, 재귀적인 사고가 필요하다. 하노이타워를 재귀적 호출로 스스로 구현할 수 있다면, 재귀적 사고의 기초는 다진 것으로 이해하면 마음이 편할 것…
문법이 이해가 안가면 내가 정리한 다음의 페이지를 참고하자. 핵심은 재귀호출은 스택에 함수와 변수들이 겹겹이 쌓였다가 Stop condition이후에 다시 겹겹히 종료된다는 것임.
함수의 재귀적 호출의 이해(2)
재귀(Recursion)는 C언어에만 있는게 아니라, 추상적이고 일반적인, 특정한 수학적 구조 자체를 말하는 것이다. C언어는 이 재귀를 대표적으로 지원하는 언어일 뿐임.
C언어에서 재귀함수의 의미는 무엇인가?
윤성우는 재귀함수를 원본 함수의 복사본들을 스택에 계속 쌓으며 함수들이 실행되는 것으로 이해한다.
즉 흔히 생각하는 것 처럼 재진입의 의미로 이해하면 어려워진다.
위에서 홍정모님한테 배운 것 처럼 스택에 함수가 쌓이는 방식으로 이해하는게 맞는 듯.