[JS-Basic] Recursive Function
Recursive Function
1. Recursive Function이란?
한국어로 ‘재귀함수’라 한다. 어느 함수가 있을 때 그 함수가 자기 자신을 다시 부르는 함수를 뜻한다.
재귀함수는 제한을 걸지 않으면 무한 루프로 돌 수 있다. 밑의 예시처럼 제한을 걸어야 한다.
그리고 재귀함수가 실행될 때 마다 그 함수는 반드시 초기 상태로 되돌아가도록 만들어져야 한다.
(출처: 초보몽키의 개발공부로그) (출처: 인벤 유머게시판: 무한루프의 예)
2. Resursive Function 예시 (Factorial)
2.1 factorial 구현 (재귀함수 X)
1
2
3
4
5
6
7
function factorial(num) {
var result = 1;
for (var i = 1; i <= num; i++) {
result *= i;
}
return result;
}
2.2 factorial 구현 (재귀함수 O)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function factorial(num) {
var endNum = 1;
if (num < 0) {
return -1;
} else if (num === 0) {
return 0;
}
if (num === endNum) {
// 제한. num가 1과 같으면 1을 리턴한다.
return endNum;
} else {
return num * factorial(num - 1);
}
}
factorial(5) // 120 를 예시로
return num * factorial(num-1)을 풀어보면
1
2
3
4
5
return 5 * factorial(4)<br>
return 4 * factorial(3)<br>
return 3 * factorial(2)<br>
return 2 * factorial(1)<br>
return 1; // endNum