코딩테스트
Recursive(재귀)
NellKiM
2025. 4. 8. 18:26
재귀(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]);
}
}