✅Notion: https://hyunsb.notion.site/Recursion
재귀함수 (Recursion)
함수가 직접 또는 간접적으로 자기 자신을 호출하는 프로세스를 말합니다.
hyunsb.notion.site
함수가 직접 또는 간접적으로 자기 자신을 호출하는 프로세스를 말합니다.
재귀함수의 종료지점을 유의하여 구현을 진행하여야 스택오버플로우가 발생하지 않으니 주의하여 구현해야합니다.
재귀함수는 스택프레임을 사용합니다.
💡 스택프레임은 모든 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 완전 소멸한다.
아래는 자연수 N이 입력되면 재귀함수를 이용하여 1부터 N까지 출력하는 프로그램 을 구현한 것입니다.
✅JAVA
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
DFS(sc.nextInt());
}
public static void DFS(int n){
if (n==0) return;
else {
DFS(n-1);
System.out.println(n);
}
}
- 입력값 N이 0이 될 때까지 N-1을 매개변수로 받는 자기 자신을 반복적으로 호출합니다.
- 입력값이 0 이 되었을 시 return 을 해주어, 호출되었던 DFS 함수의 출력문이 실행됩니다.
- 스택의 출력 순서대로 1, 2, … , n 을 출력하며 프로그램을 종료하고, 스택프레임은 소멸됩니다.
아래는 입력받은 10진수를 2진수로 출력하는 프로그램을 재귀함수로 구현한 것입니다.
✅JAVA
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
T.DFS(sc.nextInt());
}
public void DFS(int n){
if(n==0) return;
else {
DFS(n/2);
System.out.print(n%2);
}
}
- 입력값 N이 0이 될 때까지 N/2를 매개변수로 받는 자기 자신을 반복적으로 호출합니다.
- 입력값이 0 이 되었을 시 return 을 해주어, 호출되었던 DFS 함수의 출력문이 실행됩니다.
- 스택의 출력 순서대로 N%2 값인 1 or 0 을 출력하며 프로그램을 종료합니다.
✅Notion: https://hyunsb.notion.site/Recursion
'JAVA' 카테고리의 다른 글
[JAVA] 정보 은닉과 캡슐화 (0) | 2023.03.21 |
---|---|
[JAVA] 람다식 (lambda Expressions) (0) | 2023.03.21 |
[라이브러리] LomBok(롬복) (0) | 2023.03.03 |
[JAVA] Comparable<T> 인터페이스 (0) | 2022.11.28 |
[Stack & Queue] 올바른 괄호 (0) | 2022.11.24 |