| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
- 백엔드스쿨
- Docker
- Spring API
- 카카오사용자정보가져오기
- 상속
- 백엔드공부
- html
- 엔티티 생명주기
- ci/cd
- 백엔드 로드맵
- 엔티티 매니저
- tag
- 카카오인가코드받기
- Java
- oAuth2
- static
- button
- jenkins
- MIND 2023 #후기
- Interface
- 제로베이스
- GitHub_Actions
- spring
- input
- form
- 카카오인증토큰받기
- feignClient
- 인스턴스
- 어떤 개발자?
- 예외
Archives
- Today
- Total
HiDevelop
[Java] 재귀 메소드 본문
728x90
재귀함수는 문제를 해결할 때 함수 내부에서 자기 자신을 호출하여 문제를 해결하는 함수입니다. 예를 들어 2의 4승을 표현할 때
1) 2^4 = 2*2*2*2
2) 2^4 = 2*2^3
2^3 = 2*2^2
2^2 = 2*2^1
2^1 = 2
두 가지 방법으로 표현할 수 있습니다. 저희가 여기서 눈 여겨 봐야할 표현방법은 2번입니다. Square를 구할 때 Square를 통해 구하는 방법이 바로 재귀입니다.
public class Nsquare {
public static int nSquare(int n) { // 정수 n을 입력받아 2^n을 곱하는 메소드
int count = 0;
++count; //count++을 할 경우 메소드가 끝나야지 값이 증가하기 때문에 재귀함수가 끝나지 않으므로 ++count를 사용
if(count == n) // 재귀의 종료조건, 종료조건은 재귀의 연결고리를 끊기 위해 재귀호출보다 앞에 위치하는 것이 좋다.
return 2;
return 2*nSquare(n-1); // 재귀를 통해 구해진다.
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(nSquare(3));
}
}
여기서 주의할 점 있습니다.
재귀함수는 함수를 계속해서 호출하기 때문에 반드시 종료조건이 있어야 합니다! 또한 이 종료조건은 매 과정마다 확인되어야 하기 때문에 재귀를 호출하는 명령문 보다 앞에 있어야 합니다.
728x90
'Java' 카테고리의 다른 글
| [Java]Static (0) | 2021.12.21 |
|---|---|
| [Java] 클래스의 정의와 인스턴스 (0) | 2021.11.20 |
| [Java] 원의 넓이와 둘레 구하기 && 소수 판별하기 (0) | 2021.11.16 |
| [Java] StringBuilder Method (0) | 2021.11.13 |
| [JAVA]Math.min/max Method (0) | 2021.11.05 |