차례
'평범한 한글'은 함수형 언어이다.
명령형 언어가 아니기 때문에 문제를 해결할 때 함수형 언어의 기법을 먼저 고려해야 한다.
명령형 언어에서 문제를 풀 때 가장 많이 사용하는 것이 '반복'이다.
for
루프의 인덱스 변수나 while
문의 조건 변수는 다 이 범주에 속한다.'평범한 한글'에서는 이러한 명령형 언어의 처리 방식을 지원하지 않는다.
(그리고 앞으로도 이러한 기능이 추가될 계획도 없으리라 본다.)
순함수를 사용해서 반복적인 문제를 풀려면 **'재귀'**와 **'중첩 함수'**를 써야 한다.
이런 방법은 상태 변화를 동반하지 않는다. ⇒ 부작용이 없다.
아. 이제 그만 좀 우려먹자! 재귀 설명할 때마다 맨날 마트료시카!!! 으악~~~~
재귀: 자신을 정의할 때 자신을 이용하는 것.
실생활에서의 재귀
재귀 함수: 함수를 정의할 때 자기 자신을 포함하는 함수.
대표적인 재귀 함수의 예
계승(factorial)
$$ factorial(n) = \begin{cases} factorial(0) = 1 \\ factorial(n) = n \times factorial(n-1) \end{cases} $$
피보나치 수(fibonacci number)
$$ \begin{cases} F_0=0 \\ F_1=1 \\ F_2=1 \\ F_n = F_{n-1} + F_{n-2}, (n \in \{3,4...\}) \end{cases} $$