## 재귀함수
함수가 자신을 호출하는 구조로 이루어진 함수입니다. 재귀함수에는 종료조건이 존재해야하며 종료조건이 없으면 무한루프에 빠지게되어 Stackoverflow에 빠지게 됩니다. 재귀 함수로 작성되는 코드는 반복문으로도 작성이 가능합니다.
function sum(x){
if (x == 0) return 0
// 종료조건 작성
else {
return x + sum(x-1)
// 조건
}
}
console.log(sum(3))
//(3 + (2 + (1))) = 6
function fact(x){
if (x == 0) return 1
else{
return x * fact(x-1)
}
}
console.log(fact(4))
// (4 * (3 * (2 * (1)))) =24
기존에 사용했던 for, while과 다르게 훨씬 빠르게 반복문을 수행할 수 있고 코딩도 간단하게 작성이 가능하다고 합니다.
재귀함수 부분은 확실히 공부를 많이해야 할 것 같습니다.
또한, 신기한 부분이 있었는데
function recursive1(num){
if(num == 0) return 0;
recursive1(num - 1);
console.log(num);
}
// 결과 값이 1 2 3 순서로 출력됩니다.
function recursive2(num){
if(num == 0) return 0;
console.log(num);
recursive2(num - 1);
}
// 결과 값이 3 2 1 순서로 출력됩니다.
recursive1(3)
recursive2(3)
재귀함수의 위치에 따른 출력 값 위치를 봤을 때 재귀함수 기준으로 바로 위/아래 존재합니다.
recursive1 은 오름차순으로 recursive2 는 내림차순으로 배치가 되었습니다.
오름차순의 순서는 스택이 3, 2, 1 순으로 쌓여지면서 return이 되었기 때문에 마지막으로 쌓여진 순서대로 출력이 되었지만
내림차순의 순서는 스택이 쌓여지는 내내 출력이 되기때문에 내림차순으로 출력이 되었습니다.
재귀함수는 다른 코딩을 보면서 학습을 해야 될 것 같습니다.
'개인공부 > JavaScript' 카테고리의 다른 글
이벤트 루프 (0) | 2022.05.26 |
---|---|
DOM (1) | 2022.05.24 |
호이스팅 (0) | 2022.04.19 |
Array 요소 추가/삭제 (0) | 2022.04.11 |
반복문 (0) | 2022.04.05 |