재귀함수를 다룰려면 머리속에서 재귀함수를 어느정도는 돌릴 수 있는 능력이 필요한 것 같다. 그래야지 재귀함수를 쓰기 위해서 문제를 나누는 과정을 진행해서 세분화 시켜야지 비로서 재귀함수를 쓸 수 있기 때문이다.
다행히도, 이 파트에 대해서 이해가 타 사람들에 비해서 빠르게 된 편이라고 생각한다.
하나의 허물이 나오면 다시 뱀 그 자체로 재귀되고 또 허물을 하나를 벗는 것이다.
적고보니, 이게 더 이해가 어려울 사람도 많을 거 같긴 한데, 아무튼 내가 이해할 수 있었던 방식이다.
팩토리얼 문제를 보겠다.
문제 : n 번째의 팩토리얼 값을 구하시오.
이렇게 있으면 우선 예외를 생각해 봐야된다.
만약 0이들어오면 0!은 1이다.
그리고 가장 작은 단위를 생각해야된다.
가장 작은 단위는 1일 때 이다.
이것이 재귀의 탈출 조건이 되는 것이다.
그러면
if(n <= 1){
return 1;
}
라고 써볼 수 있다. 그리고, 나머지 조건은 위에서 언급했 듯이 하나씩 허물을 벗기면서 재귀하면서 곱하면 된다.
위의 가장 작은 단위와 합해본다면
function fac(n) {
if(n === 1){
return 1;
}
return n*fac(n-1);
}
이렇게 되는 것이다.