본문 바로가기
개인공부/JavaScript

간단하게 공부한 재귀함수

by BTSBRINGMEHERE 2022. 4. 20.

## 재귀함수

 

함수가 자신을 호출하는 구조로 이루어진 함수입니다. 재귀함수에는 종료조건이 존재해야하며 종료조건이 없으면 무한루프에 빠지게되어 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