Information Security Study
Recursion 개념 본문
Recursion Function
- 재귀 함수
- 함수 내부에서 자기 자신을 호출하는 함수
- 재귀함수를 사용하는 동안 함수 호출이 계속 쌓이기 때문에(호출 스택이 많아짐) 성능이 저하될 수 있다.
- -> 종료 조건인 Base case 명확히 설정 필요
호출 스택
- 프로그램에서 함수나 메서드를 호출할 때 해당 함수나 메서드의 실행이 끝날 때까지 실행되는 다른 함수나 메서드의 호출 정보를 저장하는 자료구조
- 디버깅, 예외처리, 재귀함수 등 다양하게 사용
- 함수가 호출될 때마다 그 함수의 호출 정보를 저장하고 함수의 실행 결과가 ㅏ반환되면 해당 함수의 호출 정보를 스택에서 제거한다.
장점
- 코드의 가독성 높음
단점
- 재귀함수를 호출할 때마다 스택에 새로운 프레임 생성 -> 스택이 깊어질 경우 스택 오버플로우 발생 가능
재귀함수 예시
1) 1부터 N까지의 합 구하기
public class Main
{
public static void main(String[] args)
{
System.out.println("1부터 5까지의 합: " + Function(5));
}
public static int Function(int num)
{
if(num == 1)
{
return 1;
}
else
{
return num + Function(num -1);
}
}
}
num이 만약 1일 경우 1을 반환하고 함수가 종료된다.
1이 아닐 경우에는 num 값에 Function(num -1)값을 더해서 반환한다.
2) 팩토리얼 계산
팩토리얼: 1부터 N까지의 정수를 곱한 값
public class Main
{
public static int factorial(int n) {
// Base case: n이 1 이하일 경우 1을 반환
if (n <= 1) {
return 1;
}
// Recursive case: n-1에 대한 팩토리얼 값을 구하고 n과 곱셈
else {
return n * factorial(n-1);
}
}
}
N이 1 이하일 경우 1을 반환한다.
N-1에 대한 팩토리얼 값을 구하고 N을 곱한다.
참고
https://adjh54.tistory.com/194#1)%20%EC%9E%AC%EA%B7%80%ED%95%A8%EC%88%98(Recursion%20Function)-1
[Java/알고리즘] 재귀 함수(Recursion Function) 이해하기
해당 글에서는 재귀함수에 대해 이해하며 다양한 예시와 재귀함수를 이용한 알고리즘을 기반으로 이해를 돕기 위해 작성한 글입니다. 1) 재귀함수(Recursion Function)💡 재귀함수(Recursion Function)란?
adjh54.tistory.com
https://lktprogrammer.tistory.com/106
[자바 프로그래밍] 재귀(Recursion) 알고리즘 기초
이번 포스팅에서는 재귀 알고리즘 기초에 대해서 알아보겠습니다. 1. 재귀 알고리즘 기초. 재귀 (Recursion) 함수란 특정 함수 내에서 자기 자신을 다시 호출하여 문제를 해결해나가는 함수입니다.
lktprogrammer.tistory.com
[Java] 재귀(Recursion) 함수란? 쉽게 이해해보자
Recursive 함수란 무엇인가? Recursive 함수는 자신을 다시 호출하여 문제를 해결하는 함수입니다. 이러한 방법을 이용하면 반복문 대신 문제를 더욱 간결하고 쉽게 해결할 수 있습니다. Recursive 함수
jelong.tistory.com
'Programming > JAVA' 카테고리의 다른 글
[프로그래머스] 단어변환(level3, DFS) (0) | 2024.11.08 |
---|---|
[프로그래머스] 입국심사(level3, Binary Search) (0) | 2024.11.07 |
[프로그래머스] 네트워크(level 3, BFS) (0) | 2024.10.10 |
[프로그래머스] 네트워크(level 3, DFS) (0) | 2024.10.10 |
[프로그래머스] 타겟 넘버(level 2, DFS) (0) | 2024.10.10 |