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
- 크루스칼
- Java
- 코딩테스트
- python
- generic class
- jsp
- DB
- 코딩테스트준비
- javascript
- 암호학
- 공개키 암호화
- 자료구조
- Algorithm
- 가상컴퓨팅
- sql
- 생성자
- spring
- Queue
- dfs
- 항해99
- JPA
- dbms
- 코테
- 개발자취업
- 자바의정석
- 알고리즘
- js
- 문자열
- BFS
- data structure
Archives
- Today
- Total
PLOD
자바(JAVA) 재귀(recursion) , 반복(Iteration) 메소드 본문
반복은 말 그대로 for 나 while을 사용해서 같은 기본연산 및 명령을 계속 반복하도록 하는 것이고,
재귀는 자기 자신을 계속 호출하는 메소드 이다.
재귀 함수는 stack 이라는 메모리 공간을 사용하는데, 반복적으로 자기 자신을 부르면서 stack에 쌓이기 때문에 메모리 상으로 않 좋다
그럼에도 사용하는 경우가 있는데 대표적으로 피보나치 수열과 , 팩토리얼 연산이 있다.
반복문으로 코드를 짜거나 알고리즘을 짜다 보면 길어서 가독성이 떨어지는 경우가 많은데 재귀는 간단한 점화식으로 구현이 가능해서 가독성이 높아지고 코드 짜기가 수월해지므로 적절한 상황에 맞춰 반복과 재귀를 사용하는 것이 중요하다,
|
반복문
|
재귀함수
|
기본
|
명령을 반복적으로 실행
|
함수 자체를 호출
|
조건
|
제어 조건이 참이라면 무한 반복 발생
|
조건에 수렴하지 않을 경우 무한 재귀 발생
|
종료
|
설정한 조건에 도달 할 때까지 반복 실행
|
함수 호출 본문에 조건부가 포함, 재귀를 호출하지 않고 함수를 강제 반환
|
무한 반복
|
무한 루프는 CPU 사이클을 반복적으로 사용
|
무한 재귀는 스택 오버플로우 발생
|
속도
|
빠른 실행
|
느린 실행
|
가독성
|
코드 길이가 길어지고 변수가 많아져 가독성이 떨어짐
|
코드 길이와 변수가 적어 가독성이 높아짐
|
아래는 같은 결과를 출력하는 0부터 100까지 더하는 메소드를 반복과 재귀로 표현한 것이다.
// 반복문
public int sum = 0;
for (int i = 0; i <= 100; i++) {
sum += i;
}
// 재귀
public int sum(int x) {
if(x == 100)
return x;
else
return x + sum(x + 1);
}
'개발 공부 > Java' 카테고리의 다른 글
[Java] 메서드 오버로딩(overloading), 오버라이딩(overriding) (0) | 2022.08.16 |
---|---|
자바(JAVA) 랜덤(Random)값 사용 하기 (0) | 2022.07.30 |
자바(JAVA)문자열 비교하기 Boolean 입력을 통해 참,거짓 판별하기 (0) | 2022.07.30 |
JAVA(자바) 프로그램 종료하기(System.exit(0)) (0) | 2022.07.30 |
JAVA(자바) 문자열 자르기(Substring, Split) (0) | 2022.07.30 |
Comments