재귀(Recursion)란?
자기 자신을 다시 호출하는 함수
함수 안에서 자기 자신을 다시 호출함으로써 문제를 점점 더 작은 문제로 나누는 방식
예제1)
public class Recursive1 {
//Recursive1 : 0부터 4까지 출력하시오 (1씩 증가 하는 수, 반복문 사용)
// => 재귀호출로 변경
public static void main(String[] args) {
// for(int i=0; i<5; i++) {
// System.out.println(i);
// }
int n=0;
recursive(n);
}//main
private static void recursive(int n) {
if(n==5)return;
System.out.println(n);
recursive(n+1);//재귀호출을 끝마치고 되돌아 왔을때 기존 n의 값을 유지!!
recursive(n++);//재귀호출을 한후에 1증가 (n= n+1)
recursive(++n);//1증가 후 재귀호출 (n= n+1)
}
}
예제2)
public class Recursive2 {
public static void main(String[] args) {
int[] arr = {1,3,5,7,9};
//반복문을 통해 데이터 출력
// for (int i = 0; i < arr.length; i++) {
// System.out.println(arr[i]);
// }
recursive(arr,0);
}
private static void recursive(int[] arr,int n) {
if(n==arr.length) {
return;
}
System.out.println(arr[n]);
recursive(arr,n+1);
}
}
예제3)
public class Recursive3 {
public static void main(String[] args) {
int[] arr = {1,3,5,7,9};
recursive(arr,0,0);
}
private static void recursive(int[] arr,int n, int sum) {
if(n==arr.length) {
System.out.println(sum);
return;
}
sum += arr[n];
recursive(arr,n+1,sum);
}
}
예제4)
public class Recursive4 {
public static void main(String[] args) {
int[] arr = {1,3,5};
// recursive(arr,0,0);//더하기 할때 초기값
recursive(arr,0,1);//곱하기 할때 초기값
}
private static void recursive(int[] arr,int n, int val) {
if(n==arr.length) {
System.out.println(val);
return;
}
// 더하기
// recursive(arr,n+1,val+arr[n]);
// 곱하기
recursive(arr,n+1,val*arr[n]);
}
}
'코딩테스트' 카테고리의 다른 글
백준 - 15651 N 과 M (3) (0) | 2025.04.08 |
---|---|
백준 - 15650번 N 과 M (2) (0) | 2025.04.08 |
백준 - 15649번 N과 M (0) | 2025.04.08 |
SubSet(부분집합) (0) | 2025.04.08 |
Combination(조합) (0) | 2025.04.08 |