Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
Tags
- 백준
- TiL
- 티스토리챌린지
- 핀토스
- 스택
- 자바
- userprog
- Vue.js
- 시스템콜
- HTML
- pintos
- Flutter
- 알고리즘
- defee
- 모션비트
- Java
- 소켓
- 리액트
- 오블완
- 사이드프로젝트
- 코드트리
- 4기
- 크래프톤정글
- 나만무
- JavaScript
- 자바스크립트
- CSS
- 크래프톤 정글
- corou
- 큐
Archives
- Today
- Total
미새문지
반복문과 재귀함수 본문
728x90
반복문(Loop)
반복문은 프로그래밍에서 특정 작업을 반복적으로 수행하기 위해 사용되는 제어문이다.
반복문 유형
for문
for (let i = 0; i < n; i++) {
console.log(i);
}
- 가장 일반적인 반복문 형태이며, 초기식, 조건식, 증감식으로 구성된다.
- 초기식은 한 번만 실행되고, 조건식이 참인 동안 반복 실행 블록을 수행한 후 증감식을 실행한다.
- for문은 주로 반복 횟수가 정해져 있을 때 유용하다.
while문
let i = 0;
while (true) {
console.log(i);
if(i == 10)
break;
}
- 조건식이 참인 동안 반복 실행 블록을 수행한다.
- 반복횟수가 정해져 있지 않고 특정 조건을 만족할 때까지 반복해야 할 때 사용한다.
do-while문
let i = 0;
do {
console.log(i);
i++;
} while (i < 5);
- 먼저 반복 실행 블록을 수행한 후, 조건식을 평가한다.
- 조건식이 참이면 다시 반복 실행 블록을 수행하며, 적어도 한 번은 반복 실행 블록이 실행되는 것이 보장된다.
반복문 특징
- 조건식 : 조건식이 참인 동안 반복 실행 블록이 계속 실행된다. 조건식이 거짓이 되면 반복문을 탈출
- 무한 루프 : 조건식이 항상 참일 경우(while문) 무한 루프에 빠질 수 있으므로 주의해야 한다.
- 제어문 : 반복문 내부에서 break, continue 등의 제어문을 사용할 수 있다.
- 중첩 반복문 : 반복문 내에 또 다른 반복문을 사용할 수 있다.(이중 for문)
반복문은 배열, 문자열 등의 자료구조를 순회하거나, 특정 연산을 반복적으로 수행할 때 활용된다.
효율적인 코드 작성을 위해 반복문의 조건식과 종료 조건을 잘 설정해줘야 한다.
재귀 함수(Recursion)
// 팩토리얼 재귀함수 예시
function factorial(n) {
// 기저 조건
if (n === 0) {
return 1;
}
// 재귀 단계
return n * factorial(n - 1);
}
재귀함수는 자기 자신을 호출하는 함수를 말하며, 이 개념은 함수가 문제를 해결하기 위해 자기 자신을 더 작은 문제로 분할하고, 이러한 작은 문제를 같은 방법으로 해결하는 방식에 기반을 두고 있다.
재귀는 많은 알고리즘과 데이터 구조, 특히 분할 정복 및 동적 계획법에 있어 핵심적인 기법 중 하나이다.
재귀함수의 구성 요소
- 기저 조건(Base Case) : 재귀 호출을 멈추는 조건이며, 이는 무한 루프에 빠지지 않도록 하기 위해 필수적이다.
- 재귀 단계(Recursive Case) : 함수가 자기 자신을 호출하는 부분. 이 때 문제의 크기를 줄여서 점점 기저 조건에 가까워지도록 해야 한다.
재귀함수 사용 시 주의사항
- 기저 조건의 중요성 : 모든 재귀 호출은 결국 기저 조건에 도달해야 한다. 그렇지 않으면 함수는 무한히 자신을 호출할 것이며, 이는 스택 오버플로우 오류로 이어질 수 있다.
- 성능 문제 : 재귀는 때로 반복문보다 더 많은 메모리를 사용하고 성능이 떨어질 수 있는데, 특히 깊은 재귀 호출은 스택 메모리를 많이 사용할 수 있어 주의해야 한다.
- 꼬리 재귀 최적화 : 함수의 마지막 동작이 재귀 호출일 때, 현재 함수의 실행 컨텍스트를 재사용함으로써 메모리 사용량을 줄이는 기법이다.
재귀 함수는 잘 사용하면 편하지만 적절히 사용할 필요가 있으며, 때로는 반복문으로 대체할 수 있는 경우도 있기 때문에 문제의 유형과 요구사항을 잘 확인하여 적합한 접근 방식을 선택하는 것이 중요하다.
728x90
'공부 키워드 > 알고리즘 및 데이터 구조' 카테고리의 다른 글
스택(Stack), 큐(Queue) (3) | 2024.03.29 |
---|---|
연결 리스트(Linked List) (1) | 2024.03.29 |
시간 복잡도(Big-oh Notaion) (1) | 2024.03.28 |
정렬 알고리즘 (3) | 2024.03.27 |
배열과 문자열 (2) | 2024.03.26 |