재귀함수는 함수내부에서 다시 함수 자신을 홀출하는 함수이다.
재귀함수를 사용해서 만드는 함수 거의 대부분은 반복문을 이용해서 작성 가능하다. 하지만 반목문을 사용했을때 가독성이 떨어지는 경우 재귀함수를 이용하면 가독성이 좋아지는 경우가 있다. 다음과 같은 경우에 사용하면 편리하다.
function recursion (){
...
recursion();
}
위와 같이 자기 자신 내부에서 또 자기 자신을 호출하는 형태로 작성된다. 사용시 가장 중요한 부분은 종료 조건을 만들어 주어야 한다.
팩토리얼은 양의 정수에 대해 자신과 같거나 작은 모든 정수의 곱으로 이루어져 있다. num!
로 작성한다.
5! = 120
- 5!은 5 x 4 x 3 x 2 x 1 을 한 값으로 120이 출력된다.
이를 재귀함수를 이용해 나타내면 다음과 같다.
function factorial(num){
if (num < 1){
return 1;
}
retrun num * factorial(num - 1)
}
num의 값으로 5를 넣어준다면 다음과 같이 연산 된다.
회차 | 결과 |
---|---|
1 | 5 x factorial(5-1) |
2 | 5 x 4 x factorial(4-1) |
3 | 5 x 4 x 3 factorial(3-1) |
4 | 5 x 4 x 3 x 2 x factorial(2-1) |
5 | 5 x 4 x 3 x 2 x 1 x factorial(1-1) |
6 | 5 x 4 x 3 x 2 x 1 x 1 |
마지막 종료시점이 되면 마지막 연산된 지점부터 거슬러 올라가면서 연산이 마무리 된다.