Ch.Covelope

Javascript <자바스크립트> 재귀함수, 즉시실행함수. 본문

JavaScript

Javascript <자바스크립트> 재귀함수, 즉시실행함수.

Chrysans 2021. 12. 16. 00:17
728x90
반응형

 

 

Javascript <자바스크립트>  재귀 함수, 즉시 실행 함수.

 

 

 

 

재귀 함수와 즉시 실행 함수.

 

 

재귀 함수는 말 그대로 자기가 자기 자신을 호출하고 특정 조건이 될 때까지 계속해서 호출하고 조건이 충족되면 함수를 빠져나온다.

 

  • 재귀 함수를 사용할 때는 함수를 끝내는 종료 조건이 있어야 한다. 없으면 무한으로 계속해서 돌기 때문이다.
  • 일부 함수는 반복문으로 구현 가능하지만 그렇지 않은 경우도 있는데 tree 구조의 노드 전체를 확인할 때 재귀를 사용하면 적은 코드로 확인 가능하고 직관적이다.
  • 하지만 재귀 함수를 호출할 때마다 스택을 소비하기 때문에 반복문에 비해 메모리 소비 또는 시간이 더 걸리수 있다. (스택은 나중에 포스팅)

 

 오늘은 재귀 함수중에서 팩토리얼 : 수학적 용어로 계승이란 뜻으로 1부터 n까지의 정수를 곱하는 연산이다. 예를 들어 팩토리얼 5 는 1*2*3*4*5 , 120 이다. ( 러시아 인형처럼 인형안에 인형안에 인형 ... 마지막 인형)

 

 

 

 

factorial(5)

function factorial(n) {
        if(n <= 1){ 
        return n;                               // 종료조건 n 이 1보다 작거나 같으면 n 을 리턴한다
        }                                            // 러시아 인형에서 제일 마지막 작은 인형
        return n * factorial(n-1); 
}
factorial(5)

//작동 방식 확인.

5 * factorial(4)                           // save 
5 * 4 * factorial(3)                    // save
5 * 4 * 3 * factorial(2)             // save
5 * 4 * 3 * 2 * factorial(1)       // save
5 * 4 * 3 * 2 * 1                        // 처음에 앞에서부터 숫자가 1까지 생기고 뒤부터 곱해지면서 5까지 간다.
5 * 4 * 3 * 2                             // 1*2 = 2 *3 = 6 *4 = 24 * 5 = 120
5 * 4 * 6 
5 * 24 

120

재귀함수 참고 사이트

https://ko.javascript.info/recursion

 

재귀와 스택

 

ko.javascript.info

 

 


 

즉시 실행 함수

 

 

 

  • 즉시 실행하고 외부에서 컨트롤할 필요가 없는 함수.
  • (익명 즉시 실행 함수) 함수의 이름 없이 소괄호로 한 번 더 감싸주고 함수의 마지막 소 괄요 안에 소괄호를 써서 호출해준다. 해당 함수는 한번 호출하고 사라진다.

 

(function () {                           //일반 함수과 다르게 이름이 없고 function 을 소괄호로 한번더 감싼다.
       let a = 1;
       let b = 2;
       return a + b;
 }());                                         //감싸진 소괄호 앞에 자기 자신호출하는 () 소괄호를 넣어준다.

이름이 없고 자신을 호출하고 사라져서 한번 사용되면 사라지고 다시 호출할 수 없게 된다.

 

 

 


 

재귀 함수로 구현하고 팩토리얼 이외에도 다양하게 사용할 수 있다. 아직 너무 어렵고 그나마 이해가 되는 하나를 복습하면서 포스팅했다. 앞으로 계속 공부하면서 하나씩 알아가면서 포스팅해야겠다.

 

 

 

 

 

 

 

https://github.com/chry8822

 

chry8822 - Overview

‘Keep true to the dreams of thy youth’ . chry8822 has 13 repositories available. Follow their code on GitHub.

github.com

 

 

 

 

728x90
반응형
Comments