일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 멋사
- likelion
- 네트워크
- 제주코딩베이스캠프
- 반복문
- 비동기
- for문
- 화살표함수
- 개발자
- 프론트엔드
- VAR
- 배열
- 이벤트루프
- useState
- array
- 리액트
- frontend
- react
- 코딩
- 멋쟁이사자처럼
- SS
- 자바스크립트
- JavaScript
- 메소드체이닝
- 타입스크립트
- 내일배움카드
- 웹개발
- Let
- CSS
- 국비지원
Archives
- Today
- Total
Ch.Covelope
Javascript <자바스크립트> 재귀함수, 즉시실행함수. 본문
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
즉시 실행 함수
- 즉시 실행하고 외부에서 컨트롤할 필요가 없는 함수.
- (익명 즉시 실행 함수) 함수의 이름 없이 소괄호로 한 번 더 감싸주고 함수의 마지막 소 괄요 안에 소괄호를 써서 호출해준다. 해당 함수는 한번 호출하고 사라진다.
(function () { //일반 함수과 다르게 이름이 없고 function 을 소괄호로 한번더 감싼다.
let a = 1;
let b = 2;
return a + b;
}()); //감싸진 소괄호 앞에 자기 자신호출하는 () 소괄호를 넣어준다.
이름이 없고 자신을 호출하고 사라져서 한번 사용되면 사라지고 다시 호출할 수 없게 된다.
재귀 함수로 구현하고 팩토리얼 이외에도 다양하게 사용할 수 있다. 아직 너무 어렵고 그나마 이해가 되는 하나를 복습하면서 포스팅했다. 앞으로 계속 공부하면서 하나씩 알아가면서 포스팅해야겠다.
728x90
반응형
'JavaScript' 카테고리의 다른 글
Javascript <자바스크립트> call by value - reference. {콜바이벨류.콜바이레퍼런스} (0) | 2021.12.22 |
---|---|
Javascript <자바스크립트> Map 메소드 사용하기. (0) | 2021.12.20 |
Javascript <자바스크립트> 연습 문제 풀이(split, array, for) (0) | 2021.12.14 |
Javascript <자바스크립트> 반복문, while문 (0) | 2021.12.13 |
Javascript <자바스크립트> 반복문, for문 .2 (0) | 2021.12.07 |
Comments