본문 바로가기

Theory

순환 함수(Recursion Function)

순환함수(Rescursion Function)이란?

  • 함수가 자기 자신을 반복적으로 호출하는 것
  • 재귀함수라고도 한다.

그림으로 이해하는 순환함수

간단한 예제로 이해하는 순환함수

window.onload = main();

function main() {
    whoAreYou(); // = 너는 누구야?
}

function whoAreYou() {
    console.log("저번에도 누가 물어봤었지");
    whoAreYou();
}

위 그림을 코드로 옮긴 모습이다.

이걸 실행하고 콘솔창을 확인하면 자기 자신을 계속 호출하는 무한 루프를 실행하고 있는 것을 확인할 수 있다. 즉, 순환함수란 자기 자신을 반복적으로 호출하는 것이다.

그렇다면 순환함수는 무한루프밖에 안될까?

방금 보여준 예시에서 외계인한테 이런 상황이 3번 밖에 없었다면 코드를 이렇게 수정하게 된다.

window.onload = main();

function main() {
    let num = 3;
    whoAreYou(num); // = 너는 누구야?
}

function whoAreYou(num) {

    if(num<=0){
        console.log("난 외계인이야");
        return;
    }

    console.log("저번에도 누가 물어봤었지");
    whoAreYou(num-1);

}

이런식으로 코드를 바꾸게 되면 3번밖에 실행을 하지 않게 된다.

순환함수의 활용 (팩토리얼)

재귀함수의 대표적인 활용이자 가장 기초적인 예시인 팩토리얼 예시로,

5!를 하게 되면 5~1까지의 숫자를 모두 곱하게 됩니다. 다른 예시를 몇가지 더 들자면

6! → 6 * 5 * 4 * 3 * 2 * 1

4! → 4 * 3 * 2 * 1

이런식으로 계산하게 된다. 5의 팩토리얼을 구하는 코드를 짜게 되면

window.onload = main();

function main() {
    console.log(factorial(5));
}

function factorial(num) {

    if(num === 0){
        return 1;
    }

    return num * factorial(num-1);
}

이런식으로 짤 수 있게 된다.