재귀에 대한 생각.

2020. 11. 4. 23:52컴퓨터 수업/C++

재귀를 어떻게 사용하는가?

라는 질문은 다시 재귀를 왜 사용하는가?

 

라는 질문은 다시 전방재귀랑 후방재귀의 사용법으로 귀결된다.

 

-

 

먼저 내가 전방재귀와 후방재귀를 expand해서 (#include <header>와 같이) 해석해봐야된다.


전방재귀는 어떤, stack의 역할을 수행한다.


그렇다면, 후방재귀는?

 

후방재귀야 말로, 개인적으로 생각하기엔, 재귀의 역할을 가장 잘 수행한다.


후방재귀는 buffer의 역할을 수행한다.


후방재귀는 "마치 미지의값을 아는 것 처럼 행동"한다.

 

Fibonacci 재귀함수 구현을 기억하는가?

 

 

return Fib(num -1)만 보고 생각해보자면, 나는 Fib(num-1)를 알지 못한다,

 

하지만 컴퓨터가 알거라는 "믿음"을 가지고, 해당 재귀를 사용하는것이다.

 

마치 while가 for문이 종료조건을 두고, while이 조금 더 모호하지만, 편한것처럼

 

재귀함수는 그런식으로 elegant하고 코드스타일의 편함을 제공한다.

 

(물론, efficient의 문제가 발생하고, 지역성이론에 위배되어 cache에 부담을 주지만.)