재귀적 호출(recursive call)이란
함수 속에서 자기 자신(이 함수)을 호출하는 것을 말합니다.
즉 함수를 반복해서 계속 실행하는 것입니다.
함수를 부르는 것은 느린 작업이기 떄문에
반복문인 for을 써서 구현할 수도 있지만
재귀적 호출을 이용해서 기억에서 테스트할 떄
이런 알고르짐을 응용해서 문제를 출제하는 경향이
있기 때문에 작성하는 법을 숙지해야 합니다.
예제로 등차 수열을 구현해보겠습니다.
사용자에게 숫자 하나를 입력받으면
해당 값까지 등차수열을 더한 값을 출력하는 함수입니다.
import java.util.Scanner;
public class FMain1 {
public static int Input() {
System.out.println("값을 하나 입력하세요.");
return new Scanner(System.in).nextInt();
}
public static int add(int n) {
return (n == 1 ? 1 : add(n-1) + n);
}
public static void main(String[] args) {
System.out.println(add(Input()));
}
}
코드는 간단합니다.
n == 1 일 떄는 1이고
n이 1이 아닐 때는 add(n-1)에 n 값을 더해주면됩니다.
즉 add(1)이 아니라면
add(n) 내에서 add(n-1)을 호출해야 합니다.
4를 입력하면
1 + 2 + 3+ 4 가 돼서
10이 출력되는 구조입니다.
최종적으로 add(1)이되면
1을 더해주고 값을 반환하게 됩니다.
이번 시간에는 등차 수열을 통해
재귀적 호출에대해서 배워봤습니다.
함수 내에서 함수를 한 번 더 실행해서
반복하는 기능이었습니다.
감사합니다!
'Java > 이론' 카테고리의 다른 글
[Java] switch - case 문 (0) | 2024.11.26 |
---|---|
[Java] 조건문 (0) | 2024.11.26 |
[Java] 함수의 구조 (2) | 2024.11.25 |
[Java] 함수의 종류 (0) | 2024.11.25 |
[Java] 오버로딩 (Overloading) (0) | 2024.11.22 |