재귀(Recursion)
먼저 재귀(Recursion) 함수란 특정 함수 내에서 자기 자신을 다시 호출해서 문제를 해결하는 함수를 말한다. 재귀함수는 자신의 로직을 내부적으로 반복하여 문제를 해결하고 조건이 만족되면 함수를 이탈해서 결과를 도출한다. 따라서 재귀함수는 함수 내에서 자기 자신을 계속 호출하기 때문에 반드시 종료하는 부분을 정확히 구현해야한다.
Java Code
public class RecursionEx03Ver2 {
public static int arr[] = {1, 2, 4, 8};
public static void main(String[] args) {
int n = arr.length;
System.out.println(recursion(n));
}
public static int recursion(int n) {
if (n == 1) { //배열의 원소가 하나일때 리턴
return arr[0];
} else {
int x = Math.max(arr[n - 1], recursion(n - 1));
//x와 n은 다름 ,x는 확인을 위해 출력
//System.out.println(x);
return x;
}
}
}
배열에서 첫 번째 원소와 첫번째 원소나 첫번째 원소를 제외한 배열 중 최대값을 비교해서 최대값을 리턴하는 방식이다.
(해당 코드에서는 첫번째 원소가 마지막원소로 바꿈)
이때 배열의 원소개수가 하나일때 호출을 멈추도록 종료조건을 설정했다.
밑에는 그림으로 재귀 호출이 어떻게 일어나는지 표현해보았다...
'CS > 알고리즘' 카테고리의 다른 글
재귀(Recursion) 알고리즘과 피보나치 수열 (1) | 2023.12.15 |
---|---|
그리디(Greedy) 알고리즘 (0) | 2023.12.11 |
이진 탐색(Binary Search) (0) | 2023.12.10 |
퀵 정렬(Quick Sort) (0) | 2023.12.08 |
삽입정렬(Insertion sort) (0) | 2023.12.08 |